gdb 调试C++代码

紫薯上的 使用 gdb 调试程序 , 试了下  , 确实可以很好加深对 递归 和程序执行的理解

程序如下:

#include<cstdio>
int f(int n){
    return n==0 ? 1:f(n-1)*n;
}
int main(){    
    printf("%d\n", f(5));
    return 0;
}

g++ -g -o uva489 uva489.cpp//生成可执行文件 ,注意必须使用-g参数,编译会加入调试信息,否则无法调试执行文件

gdb uva489.exe

(gdb) l

(gdb) b 3

Breakpoint 1 at 0x401356: file uva489.cpp, line 3.

gdb) b 4
Breakpoint 2 at 0x401375: file uva489.cpp, line 4.
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep y 0x00401356 in f(int) at uva489.cpp:3
2 breakpoint keep y 0x00401375 in f(int) at uva489.cpp:4

(gdb) d 1
(gdb) i b
Num Type Disp Enb Address What
2 breakpoint keep y 0x00401375 in f(int) at uva489.cpp:4
(gdb) r
Starting program: E:\ACM/uva489.exe
[New Thread 12868.0x271c]
[New Thread 12868.0x2a0c]
[New Thread 12868.0x109c]

Breakpoint 2, f (n=0) at uva489.cpp:4
4 }

  enmmmmmm, 具体的命令不难

   b 1-设置第一行断点   d 1-删除第一个断点

   l - list list: 列出当前位置之后的10行代码 i b-列出所有断点  

   bt(backtrace):列出调用栈   n: 单步跳过   s: 单步进入

  r-运行程序  p var_:打印变量值   delete breakpoints:删除所有断点;delete breakpoints id:删除编号为id的断点;disable/enable breakpoints id:禁用/启用断点

  finish:执行到函数retun返回

猜你喜欢

转载自www.cnblogs.com/163467wyj/p/10673607.html