[英]For a library, GDB does only see source in header files, whereas source in .cpp files is not available
我正在使用gdb
調試針對靜態庫編譯的程序。 庫和程序都使用調試符號進行編譯。 對於此庫, gdb
只會看到.h
文件中實現的源代碼,而看不到.cpp
文件中實現的源代碼。 我想知道為什么?
例如
(gdb) info sources
僅列出該庫中的頭文件,不列出.cpp
文件。
我可以將斷點設置為.cpp
文件中實現的某些功能。 例如, gdb
理解以下命令:
(gdb) break orgQhull::Qhull::runQhull,
但是,無法調試該函數體內的代碼。 (只能使用stepi
命令在匯編程序級別上單步執行各個指令。)另一方面,調試器可以查看在頭文件中實現的功能代碼。
backtrace
命令報告前面提到的runQhull
函數沒有“可用的符號表”:
(gdb) backtrace full #0 0x00000000004d361a in orgQhull::Qhull::runQhull(orgQhull::RboxPoints const&, char const*) () No symbol table info available. #1 0x000000000049573a in ConvexHull::ConvexHull (this=0x7fffffffcb70, tree=..., begin=..., end=...) at /home/filip/fel/dp/sandbox/src/populating_octomap/include/ConvexHull.h:40
這可能是什么原因? 歡迎任何建議!
一些細節:
libqhullcpp.a
,其源代碼為git://gitorious.org/qhull/qhull.git
這可能是什么原因?
或
-g
標志,或者 檢查您的庫構建日志。 您相信您使用-g
構建了它,但是您很可能會誤會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.