GDB 回溯跟踪不显示带有 cmake 的函数名称
GDB Backtrace doesn't show function names with cmake
在我的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)
的情况下重新生成构建文件时,调试符号丢失了(正如预期的那样),但显示了回溯函数调用。
(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)的情况下重新生成构建文件时,调试符号丢失了(正如预期的那样),但显示了回溯函数调用。
最可能的原因是:您将GDB指向了错误的可执行文件。
据我所知,更改CMAKE_BUILD_TYPE
会更改构建输出目录,如果您没有为此调整GDB命令,和如果您连接到一个正在运行的进程,而不是从GDB内部运行,那么这将解释您观察到的所有症状。
相关文章:
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- CMake 不链接 C 和 C++ 静态库(未定义对函数的引用)
- CMake 子项目不能调用 OpenGL 函数,但父项目可以
- 将 cmake 代码段转换为函数 - 不起作用
- CMake 无法检测 gcc 内置函数,如 sqrt、pow、exp 等
- Android Native:CMake 链接错误:未定义对 GL 函数的引用 - 即使包含并链接了 EGL 和 GLESv3
- Cmake,Android:调用在预构建库中定义的静态函数
- CMake ADD_LIBRARY函数的编译器标志的哪个变量?
- Catch2 cmake 函数 'catch_discover_tests()' 在 bulid 时间内不起作用
- SWIG + CMAKE:缺少初始化函数
- C++11 cmake O3 选项<没有用于初始化 'std::thread' 的匹配构造函数>
- "Segmentation fault"使用 Cmake 在C++代码中运行 python 函数时
- CMake 解析错误函数缺少结尾")"。而是找到带有文本的未终止字符串")
- Cmake找到了通往OpenCV库的路径,但没有找到OpenCV函数Rodrigues
- ICU ustdio.h函数:使用CMake构建时,在Mac操作系统上使用未定义的符号
- 使用DllMain函数(MinGW+CMake)创建一个Windows共享库
- GDB 回溯跟踪不显示带有 cmake 的函数名称
- CMAKE:使用不同参数重复调用函数会给出相同的结果
- cmake链接本地文件期间未定义的函数
- 如何从add_custom_target/命令调用CMake函数