1.保证你编译的程序加上了-g选项
比如g++ -g test.cpp -o test
2.保证你打开了coredump文件限制开关,否则不能生成core文件,如果可以运行程序,可以在gdb里面运行gdb test也可以得到运行栈。
$ulimit -c unlimited
gdb常用命令列表
1.当程序出现core dump时,使用下面的命令调试:
gdb 程序名 core.1234 或
gdb core.1234
2.使用下面命令查看出错点:
bt
3. q 退出
4. kill 终止调试的程序
5. h help 帮助
6. <tab> 命令补全功能
7. step 跟入函数
8. next 不跟入函数
9.l list 列出代码:一次列10 行.连接使用list将会滚动显示.也可以在list后面跟上 文件名:行号
10.watch 变量名:观察一个变量的值,每次中断时都会显示这个变量的值
11.info threads:查看运行的线程。
12.thread 1:切换到线程1.
13.bt:打印当前的函数调用栈的所有信息。
14.bt 5:只打印栈顶上5层的信息。
15.bt -5:只打印栈底下5层的信息。
16.frame 0:切换当前栈到第0层。
17.up 1:栈往上移动1层。
18.down 1:栈往下移动1层。
19.info frame:打印当前栈的详细信息。
20.info args:打印当前函数的参数名和值。
21.info locals:打印当前函数中所有局部变量及其值。
22.info catch:打印当前函数的异常处理信息。
23.list 5:显示程序第5行周围的源代码。
24.list get:打印函数名位get的函数的源代码。
25.list :显示当前行后面的源代码。
26.list -:显示当前行前面的源代码。
27.set listsize 5:设置一次显示源代码的行数。
28.show listsize:显示源代码的行数的值。
29. info b :显示所有断点
30.delete num: 删除断点