gdb backtrace 未显示 main() 的完整堆栈跟踪

fah*_*ash 5 c++ gdb

我正在使用Xalan 库。我的程序在 Xalan 调用中的某个地方崩溃了。我希望看到从 main() 一直到崩溃点的完整堆栈跟踪。我正在使用以下命令行来编译

g++ -o program.out -g -O0 -lxalan-c myprogram.out
Run Code Online (Sandbox Code Playgroud)

我正在使用“backtrace full”命令并获得以下输出

 #0  0xb79313b4 in xalanc_1_11::XPath::findRoot(xalanc_1_11::XPathExecutionContext&,    xalanc_1_11::XalanNode*, int const*, int, xalanc_1_11::MutableNodeRefList&) const () from     /usr/lib/libxalan-c.so.111
No symbol table info available.
#1  0xb793afa9 in xalanc_1_11::XPath::step(xalanc_1_11::XPathExecutionContext&, xalanc_1_11::XalanNode*, int const*, xalanc_1_11::MutableNodeRefList&) const
() from /usr/lib/libxalan-c.so.111
No symbol table info available.
#2  0xb793d350 in xalanc_1_11::XPath::locationPath(xalanc_1_11::XalanNode*, int const*,  xalanc_1_11::XPathExecutionContext&) const ()
from /usr/lib/libxalan-c.so.111
No symbol table info available.
#3  0xb7937d22 in xalanc_1_11::XPath::executeMore(xalanc_1_11::XalanNode*, int const*,  xalanc_1_11::XPathExecutionContext&) const ()
from /usr/lib/libxalan-c.so.111
 No symbol table info available.
 #4  0xbffff02c in ?? ()
 No symbol table info available.
Run Code Online (Sandbox Code Playgroud)

上面的堆栈跟踪显然没有显示从 main() 开始的完整堆栈跟踪,我错过了什么?

只有一个线程在运行,这是 showthreads 的输出

  Id   Target Id         Frame
 * 1    Thread 0xb6f79980 (LWP 8888) "xmltest.out" 0xb79313b4 in xalanc_1_11::XPath::findRoot(xalanc_1_11::XPathExecutionContext&, xalanc_1_11::XalanNode*, int const*, int, xalanc_1_11::MutableNodeRefList&) const () from /usr/lib/libxalan-c.so.111
Run Code Online (Sandbox Code Playgroud)

Pau*_*ien 3

使用 -g 重建 libxalan-c,您应该可以看到它的回溯。

正如评论中提到的,对于某些目标,可能需要 -ggdb 或 -ggdb3 而不是 -g 。

  • @EmployedRussian你可能是对的,它的 -ggdb 或 -ggdb3 以获得完整信息。 (2认同)