前言
GDB调试(GNU debug)是unix下的调试工具,可以调试C和C++;
程序怎么才能使用GDB?
编译的时候加上 -g,保留调试参数;
如果是别人做的执行文件,可以直接“gdb 文件名”,提示“no debugging symbols found”表示不能被调试;
如何调试
先编译:g++ -g hello.cpp -o a.out
开始调试:gdb a.out
然后输入 run开始运行程序
设置奔溃文件大小
查询崩溃文件大小限制:ulimit -c(如果结果显示为0则表示不会产生core dump文件)
设置崩溃文件大小:
不限制崩溃文件大小:ulimit -c unlimited
设置大小为10块,一块为512字节:ulimit -c 10
调试崩溃文件:gdb 程序文件名 core文件名? gdb ./文件名 core.2065
输入bt可以查看到调用堆栈了
调试已经运行的程序
打开另一个终端,查询已经运行的程序的进程id:grep -ef | grep 程序名
输入gdb开始调试,如果提示Operation not permitted,则需要使用管理员权限调试;
以管理员权限调试:sudo gdb
根据进程id调试相应的进程:attach id号
参考文档:GDB调试指南 | 守望的个人博客 (yanbinghu.com)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)