Ich versuche, auf einem Server Debugging auf einem Problem, das ich vermute, ist mit einem Pufferüberlauf verbunden, so habe ich versucht, meinen Code mit -fsanitize=address
zu kompilieren, um die Adressbereinigung zu ermöglichen.GCC-Adresse Sanitizer Core Dump bei Fehler
Es kompiliert, und die resultierende Software läuft. Ich versuche jedoch, einen Core-Dump zu bekommen, wenn der Adressdesinfizierer einen Fehler entdeckt, da dies die einzige Möglichkeit ist, Informationen aufgrund des Setups aus dem System zu bekommen.
Ich rufe die Software mit ASAN_OPTIONS=abort_on_error=1
vor der Befehlszeile (mit einem Shell-Skript, um dies zu tun), und haben überprüft, dass ulimit -c
unbegrenzte gibt als Ergebnis, aber es wird nur nicht ein Core-Dump erzeugen.
Was fehlt mir?
Dies ist auf einem Ubuntu 14.04 Server mit gcc Version 4.8.4
EDIT: sysctl kernel.core_pattern
gibt zurück kernel.core_pattern = |/usr/share/apport/apport %p %s %c %P
. Dies bedeutet wahrscheinlich, dass apport aktiviert ist (zumindest in irgendeiner Form). Allerdings konnte ich auf diesem System die richtigen Kerndateien von Aneignungen und SIGFPEs in der Software erhalten (von denen der Verdacht auf Array-Überläufe herrührt).
Haben Sie 'apport' aktiviert? Was ist der Wert von 'kernel.core_pattern' sysctl value? –