web-dev-qa-db-fra.com

Impossible de générer le vidage de mémoire après la désactivation de la répartition

Salut, je programme actuellement c ++ sur Ubuntu et je suis incapable de générer un vidage de mémoire avec une erreur de segmentation. Je reçois juste "faute de segmentation" et non le (vidage de mémoire) que j'ai défini ulimit -c illimité.

Avant, je pouvais générer des vidages mémoire, mais il y a quelque temps, ils ont cessé de venir. C'est peut-être parce que j'ai désactivé la répartition à cause de ce bogue "Désolé, Ubuntu 12.04 a rencontré une erreur interne." .

Je me demandais donc quelles étaient les autres étapes pour activer les vidages de mémoire après ulimit -c illimité?

1
dskioldebrand

Les coredumps doivent être activés dans le noyau à

/proc/sys/kernel/core_pattern

qui peut être fixé en permanence par

sysctl kernel.core_pattern=$coredump_name

par exemple.

sysctl kernel.core_pattern=core
sysctl kernel.core_pattern=/var/crash/%E.%p.%t.%s
  • %E donne le chemin complet du programme bloqué (avec / remplacé par !)
  • %p donne l'ID de processus du programme bloqué
  • %t donne l'horodatage Epoch
  • %s donne le numéro du signal de terminaison

Tous les détails sont dans man 5 core.

5
Martin