Es konnte keine Core-Datei für mein abgestürztes Programm erstellt werden

7

Ich benutze Ubuntu 12.04 LTS. Ich habe ein einfaches Programm wie folgt geschrieben, um einen Absturz zu erzeugen:

%Vor%

Jetzt laufe ich mit "gcc -g null.c" und dann "./a.out" und die Ausgabe ist wie erwartet.

%Vor%

Jetzt möchte ich die Core-Dump-Datei mit gdb sehen. Ich habe die folgenden Sachen gemacht

  1. Ich habe das aktuelle Verzeichnis überprüft, es gibt keine Core-Dump-Datei
  2. Ich habe versucht, das / proc / sys / kernel / core_pattern mit dem Inhalt "core.% e.% p" zu ändern. Aber ich kann nicht in die Datei schreiben. Es heißt "Fsync Failed".
  3. Ich habe das "sudo vi / proc / sys / kernel / core_pattern" benutzt. Kann immer noch nicht in die Datei schreiben.

Ich möchte den Core-Dump in meinem aktuellen Verzeichnis erstellen. Was jetzt zu tun?

    
Surjya Narayana Padhi 06.10.2012, 13:30
quelle

4 Antworten

19

Ihre eigentliche Frage scheint nicht zu sein: "Wo ist mein Kernspeicherauszug?", sondern "Wie kann ich /proc/sys/kernel/core_pattern " ändern?

%Vor%

sollte den Trick machen.

    
Employed Russian 06.10.2012, 14:13
quelle
4

Sie müssen die Größe der Speicherauszugsgröße mit dem folgenden Befehl anpassen:

  

ulimit -S -c maximale Kernspeicherauszugsgröße

Der Wert ist in Kb angegeben.

    
Serge 06.10.2012 13:43
quelle
2

Sie müssen kein Kernmuster verwenden. Es ist nur Dumps in diesem Format% e.% p

Was Sie tun müssen, ist #ulimit -c unlimited

und überprüfen Sie #ulimit -a

und bestätigen Sie, ob die Kerndatei korrekt eingestellt ist. Du bekommst danach den Kern als core.pid.

    
Ranjith Ruban 06.10.2012 17:15
quelle
1

Nach meinem Verständnis ist die Verwendung von ulimit nicht permanent, d. h. wenn Sie einen Neustart durchführen, wird das Limit wieder auf 0 gesetzt. Um unbegrenzt permanent zu sein, müssen Sie /etc/security/limits.conf ändern. Ändern Sie für Kernmuster usw. die Datei /etc/sysctl.conf.

    
Reshad user2701173 06.08.2014 16:30
quelle

Tags und Links