2016-06-23 19 views
1

Ich habe ein Programm in C++ geschrieben und C mit der soirce. Wenn ich das Programm mit GDB ausführe, erhalte ich Zeilennummern und Zugriff auf die Quelle für den C++ - Code, aber nicht den C-Code (d. H. Stack-Trace verweist mich auf die aufgerufene C++ - Funktion, aber nicht auf C). Außerdem weiß ich, dass der C-Code Fehler enthält.GDB mit C++, die C-Code ruft

Gibt es eine Möglichkeit, wie ich den C-Code auch in GDB angezeigt bekommen kann? Es wäre sehr nützlich zu sehen, welche Zeilen im C-Code mich Probleme verursachen, aber wie es steht, bekomme ich nur Speicheradressen, wenn das Programm von einem Problem abstürzt.

Außerdem bin Erzeugen ich meine Make-Datei CMake mit der Einstellung set(CMAKE_CXX_FLAGS, "-g -fopenmp -Wall")

+1

Was meinen Sie mit "Anruf"? Und wie ist alles aufgebaut? Sie müssen die Debugging-Unterstützung in allen Kompilierungen aktivieren, um sicherzustellen, dass Symbole usw. enthalten sind. – unwind

+1

Kompilieren Sie es mit Debugging-Optionen. –

+0

Das Makefile wird von CMake erzeugt, mit set (CMAKE_CXX_FLAGS, "-g -fopenmp -Wall"). Gibt es eine Markierung, die ich mit einschließen muss, um Debugging für C auch zu aktivieren? Ich dachte -g würde sich darum kümmern – QtizedQ

Antwort

2

Verwendung Sie generieren Debug-Informationen für C++ Code, nicht die C-Code. Sie müssen auch die CMAKE_C_FLAGS wie folgt auf:

set(CMAKE_C_FLAGS, "-g") 

weitere Optionen hinzufügen, wie gebraucht.

+0

Genau das, was ich brauchte, danke für Ihre Antwort. – QtizedQ