1、gdb调试器
linux下的gdb调试器,是一款GNU组织开发并发布的UNIX/Linux下的程序调试工具,他没有图形化的友好界面,但功能强大。
bt查看函数调用的栈空间
(1)list 查看指定位置的源代码,后可以跟行号
(gdb) l 1
1 #include<iostream>
2 #include<stdio.h>
3 using namespace std;
4 void Test()
5 {
6 printf("Test function");
7
8 }
9 int main(int argc,char * argv[])
10 {
(2)后面可以跟函数名显示函数定义
(gdb) l Test
1 #include<iostream>
2 #include<stdio.h>
3 using namespace std;
4 void Test()
5 {
6 printf("Test function");
7
8 }
9 int main(int argc,char * argv[])
10 {
(3)设置断点 b+行号
指定位置设置断点
(gdb) break 10
Breakpoint 1 at 0x4008c1: file main.cpp, line 10.
(4)设置断点b+函数名
(gdb) b Test
Breakpoint 4 at 0x4008a1: file main.cpp, line 6.`
(5)运行程序 run
(gdb) run
(6)gdb打印和设置内存变量
打印print
(gdb) print i
$1 = 101
设置set
(gdb) set i=99
Ambiguous set command “i=99”: .
(gdb) set var i
warning: Expression is not an assignment (and might have no effect)
(gdb) set var i=99
第一次set i=99出现二义性,因为程序不知道是要设置cpp中的i还是我们设置的i
所以set var i=99,设置成普通变量
(7)程序如果已经宕掉如何调试
Core又称为Core Dump文件,生成内存镜像文件
通过Core Dump文件进行调试
如何生成Core Dump文件
用到两个指令:
root@ubuntu:/code/src/testgdb# ulimit -c
0
像这样等于0说明无法生成Core Dump文件
解决方法 加上n(数值)
ulimit -c n 单位kb
ulimit -c unlimited 不限制大小的Core Dump文件
成功生成Core Dump文件怎么查看。可以通过下面的指令
gdb main core
直接查看Dump文件