debug std::string 遇到的问题

  toolchain: cmake make clang++ lldb

  以下代码中声明了全局变量 start, end, layer

1
2
3
static std::vector<std::string> layer;
static std::string start;
static std::string end;

  对上全局变量使用lldb debug时,出现如下错误

fuckcpp

fuckcpp

  经过搜索 stackoverflow 有人建议在 CMakeFile.txt 中添加如下一行

1
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG")

  lldb 错误消失但是逻辑错误仍存在,参考类似的问题初步猜测与 libstdc++ 中 string 实现有关.

  新建工程测试发现无误.

  再将 toolchain 更换为 g++ lldb 后问题消失,debuger 更换为 gdb 也正常,看来是 clang++ 实现有误.