标签:gdb

以下是与标签 “gdb” 相关联的文章

windows 下 clang 编译后无法查看 string 变量值问题

ubuntu 上用 lldb 可以正常调试,在 windows 上用 gdb 无法调试。开始以为是 mingw/clang/gdb 间的版本差异无法查看 std::string 变量值,尝试了各种版本组合,都不行。

stackoverflow 上找到了这个回答,原因是 clang 默认不生成 std::string 的调试信息,需要另外安装 libstdc++ 的编译符号表才能调试。

在 cmake 中加入这个编译选项,可以解决此问题

if((CMAKE_BUILD_TYPE STREQUAL Debug) OR (CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo))
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-limit-debug-info")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-limit-debug-info")
endif()

另外需要注意的是:

  • mingw 版本升级后,影响头文件和 lib 兼容,经常需要修改代码才能编译通过。
  • clang 版本升级仅影响二进制兼容,不影响代码兼容。
  • 目前比较稳定的组合是 clang400 + mingw540