Wo ist meine Kerndatei nach dem segfault?

9

Wenn mein Programm segfold ist, erwarte ich einen Arbeitsspeicher, aber es gibt keinen. Ich dachte, nur Kompilieren mit -g war genug, um eine Kerndatei zu bekommen. Hier sind die gcc-Zeilen aus meinem Makefile:

%Vor%

Alle Bibliotheken sind auch mit -g kompiliert / verlinkt.

Und hier ist die GCC-Versionsinfo:

%Vor%

Meine Frage: Was muss ich gcc (oder irgendjemand anderem) noch sagen, um eine Kerndatei zu erhalten?

    
Pete Wilson 03.01.2012, 20:02
quelle

2 Antworten

18

Es kann sein, dass die Kerngröße auf 0 gesetzt ist. Probieren Sie

aus %Vor%

wenn es

anzeigt %Vor%

tue es dann

%Vor%

(Sie müssen möglicherweise Ihre Profilskripte ändern, um dies dauerhaft zu ändern)

    
elijah 03.01.2012, 20:06
quelle
3

Sie müssen Core Dump aktivieren, insbesondere indem Sie das entsprechende Ressourcenlimit festlegen. Der Systemaufruf ist setrlimit , wenn Sie es in Ihrem Programm festlegen möchten. Meistens müssen Sie es in Ihrer Shell einstellen, z. mit ulimit -c unlimited

Und Ihre Frage ist wahrscheinlich ein Duplikat dieses und viele andere.

Übrigens ist es normalerweise nicht gcc , das den Kern ablegt, es ist Ihr Programm (kompiliert von gcc oder einem anderen Compiler, wie clang oder tcc ).

Vergessen Sie nicht, Ihr Programm mit gcc -Wall -g zu kompilieren.

Und Ihre Frage hat viele Antworten, Sie finden Tausende oder mehr von ihnen mit Google oder einer anderen Suchmaschine.

    
Basile Starynkevitch 03.01.2012 20:06
quelle

Tags und Links