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?
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.