在我的CMakeLists文件中,最后我有set(CMAKE_BUILD_TYPE Debug)
。但是,当我尝试进行回溯时,我得到的只是
#0 Car::setTexture (this=0x10025cc20, tex=...)
#1 0x0000000100002a0f in ?? ()
#2 0x0000000020000000 in ?? ()
#3 0x0000000020000000 in ?? ()
#4 0x0000000120000000 in ?? ()
#5 0x000000010023ce90 in ?? ()
#6 0x0000008000000060 in ?? ()
到目前为止,我尝试调试的所有其他内容(
list
等)都运行良好。仅回溯缺少函数名称。但是,当我用cmake set(CMAKE_BUILD_TYPE Debug)
注释掉重新生成构建文件时,调试符号丢失了(如预期的那样),但是显示了backtrace函数调用。(gdb) backtrace
#0 0x00000001000056b4 in Car::setTexture(TRTexture) ()
#1 0x0000000100002a0f in SDLWrapper::loadSprite(Sprite*) ()
#2 0x0000000100004654 in TypeRight::startGame() ()
#3 0x0000000100001cc8 in main ()
最佳答案
但是,当我在注释掉cmake集(CMAKE_BUILD_TYPE Debug)的情况下重新生成构建文件时,调试符号丢失了(如预期的那样),但显示了backtrace函数调用。
最可能的原因:您将GDB指向错误的可执行文件。
据我了解,更改CMAKE_BUILD_TYPE
会更改生成输出目录,并且如果您尚未为此调整GDB命令,并且如果要附加到正在运行的进程而不是从GDB内部运行,那么这将解释所有您观察到的症状。
关于c++ - GDB Backtrace不显示带有cmake的函数名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29198502/