zoukankan      html  css  js  c++  java
  • gdb 调试C++代码

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

    程序如下:

    #include<cstdio>
    int f(int n){
        return n==0 ? 1:f(n-1)*n;
    }
    int main(){    
        printf("%d
    ", 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返回

  • 相关阅读:
    maven打包
    Description Resource Path Location Type Project configuration is not up-to-d
    GoldenGate
    maven打包 把要的依赖也打进去 配置
    mysql如何优化where子句
    根据状态计算操作状态
    kafka direct模式
    Kafka Connect
    Kafka Streams
    如何看源码
  • 原文地址:https://www.cnblogs.com/163467wyj/p/10673607.html
Copyright © 2011-2022 走看看