我使用gdb
来调试针对静态库编译的程序。库和程序都使用调试符号进行编译。 对于此库,gdb
仅查看.h
个文件中实现的源代码,而不查看.cpp
个文件中实现的源代码。我想知道为什么?
例如
(gdb) info sources
仅列出该库中的头文件,而不列出.cpp
个文件。
我能够将断点设置为.cpp
文件中实现的某个函数。例如gdb
了解此命令:
(gdb) break orgQhull::Qhull::runQhull,
但是,不能调试该函数体内的代码。 (只能使用stepi
命令逐步执行汇编程序级别的单个指令。)另一方面,debuger能够查看头文件中实现的函数代码。 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
答案 0 :(得分:1)
这可能是什么原因?
无论
-g
标志或检查您的库构建日志。您相信是使用-g
构建的,但您非常可能会误会。