如何在没有源代码的情况下检查GDB中的std :: string?

时间:2011-07-21 13:39:23

标签: c++ stl gdb std c++-standard-library

我正在尝试调试没有可用源代码的程序,我需要查看它存储在std :: string中的内容。我一直在谷歌搜索并在这里查看,我发现了一些关于输出STL容器的信息,但所有这些都引用了变量,没有源或调试信息我只有类数据的内存偏移量。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:28)

每个std::string实现都有一个指向其中某个原始字符的指针。对于g++ 4.x,该指针位于字符串的偏移0

如果您知道该字符串位于例如0x7fffffffda88,然后

print *(char**)0x7fffffffda88

是你需要的。

答案 1 :(得分:13)

也许最简单的选择是使用c_str方法,如:

print myStr.c_str()