+-

在我们调试C应用程序时,是否有一些“默认函数”在GDB上打印像字符串这样的对象?像:toString();
或者我的班级必须实施类似的东西?
最佳答案
您可以使用print命令始终打印std :: string(或其他任何内容).但是,与C模板容器内部的挣扎可能并不令人愉快.在最新版本的工具链(GDB Python Pretty Printers,它们通常作为大多数用户友好的Linux发行版的开发包的一部分一起安装)中,它们会被自动识别和打印(非常好!).例如:
$cat test.cpp
#include <string>
#include <iostream>
int main()
{
std::string s = "Hello, World!";
std::cout << s << std::endl;
}
$g++ -Wall -ggdb -o test ./test.cpp
$gdb ./test
(gdb) break main
Breakpoint 1 at 0x400ae5: file ./test.cpp, line 6.
(gdb) run
Starting program: /tmp/test
Breakpoint 1, main () at ./test.cpp:6
6 std::string s = "Hello, World!";
Missing separate debuginfos, use: debuginfo-install glibc-2.16-28.fc18.x86_64 libgcc-4.7.2-8.fc18.x86_64 libstdc++-4.7.2-8.fc18.x86_64
(gdb) next
7 std::cout << s << std::endl;
(gdb) p s
$1 = "Hello, World!"
(gdb)
正如@ 111111指出的那样,请查看http://sourceware.org/gdb/wiki/STLSupport以获取有关如何自行安装此设备的说明.
点击查看更多相关文章
转载注明原文:使用GDB打印C类对象 - 乐贴网