【发布时间】:2023-03-20 02:24:01
【问题描述】:
我正在尝试调试一个没有可用源代码的程序,我需要查看它存储在 std::string 中的内容。我一直在谷歌搜索和查看这里,我发现了一些关于输出 STL 容器的信息,但所有这些信息都指的是变量,没有源或调试信息,我所拥有的只是类数据的内存偏移量。有没有办法做到这一点?
【问题讨论】:
标签: c++ stl gdb std c++-standard-library
我正在尝试调试一个没有可用源代码的程序,我需要查看它存储在 std::string 中的内容。我一直在谷歌搜索和查看这里,我发现了一些关于输出 STL 容器的信息,但所有这些信息都指的是变量,没有源或调试信息,我所拥有的只是类数据的内存偏移量。有没有办法做到这一点?
【问题讨论】:
标签: c++ stl gdb std c++-standard-library
每个std::string 实现都有一个指向其中某个地方的原始字符的指针。对于g++ 4.x,该指针位于字符串中的偏移量0。
如果您知道字符串位于例如0x7fffffffda88,然后
print *(char**)0x7fffffffda88
是你需要的。
【讨论】:
也许最简单的选择是使用c_str 方法,如:
print myStr.c_str()
【讨论】: