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返回

  • 相关阅读:
    位操作符:&位与、|位或、^异或、~求反、<<左移位、>>带符号右移位、>>>无符号右移位
    【leetcode】496. Next Greater Element I
    after_create and after_commit
    rails跳过回调的方法
    ruby执行周期性任务
    Nokogiri爬虫教程
    用ruby调用执行shell命令
    Redis使用详细教程
    rails中params[:id]与params["id"]分析
    mysql备份与恢复数据
  • 原文地址:https://www.cnblogs.com/163467wyj/p/10673607.html
Copyright © 2011-2022 走看看