Gemäß offiziellen Anweisungen, um ein Programm zu kompilieren mit Debugging-Unterstützung SieBugsymbol für ein Programm Expose mit mehreren Sprachen zusammengestellt
g++ -std=c++11 -O0 -g -c -o program1.o program1.cpp
nun das gleiche mit einem C-Programm zu tun laufen können, es ist nur:
gcc -O0 -g -c -o program2.o program2.c
um beide Arten miteinander zu verbinden, könnte ich verwenden:
g++ --std=c++11 -O0 -g -o program program.o program2.o
Dann debuggen :
gdb program
gdb > run <PARAMS>
Es funktionierte ganz nach mehreren Versuchen mit den Compiler-Optionen (die oben genannten Optionen sind für eine funktionierende Version) bei bastelt. In einigen Fällen würden die C-Symbole geladen, aber die C++ - Symbole nicht.
Kann jemand etwas beleuchten, was die empfohlenen Optionen sind, Debugging für nicht-triviale Beispiele zu aktivieren, die mehrere kompilierte Sprachen mischen? Die gesamte Dokumentation bezieht sich nur auf triviale Beispiele.
Nicht verwandt mit Ihrer Frage, aber ausführbare Programme haben nicht das '.so' Suffix, es ist für * Shared Object * (d. H. Dynamische Bibliotheken oder eine DLL). Auf POSIX-Systemen wie Linux oder OSX haben ausführbare Programme normalerweise kein Suffix. –
Wie bei Ihrer Frage verwendet GCC immer die Option "-g", um Debug-Informationen hinzuzufügen, unabhängig von der Sprache. Es ist auch eine gute Idee, die Optimierung mit '-O0' zu deaktivieren. Das ist alles. –
Der Link-Schritt benötigt auch die Option "-g". Und wenn das Debugging über 'gdb' erfolgt, dann ist die richtige Option für beide Kompilier- und Linkschritte' -ggdb', da dies noch mehr Informationen zur Verfügung stellt, die 'gdb' benutzen kann. – user3629249