zoukankan      html  css  js  c++  java
  • gdb调试

    1.使用命令:gcc demo.c -o app -g 生成app

    2.gdb app

    3.list命令,列出代码,后面可以使用l代替list

    4.输入b + 行号,在对应的行号设置断点,b + 行号 if 。。。设置条件断点

    5.info b 可以查看断点信息

    (gdb) list
    1    #include <stdio.h>
    2    
    3    int add(int a,int b)
    4    {
    5        return a + b;
    6    }
    7    
    8    void main()
    9    {
    10        int i;
    (gdb) l
    11        int sum[10] = {0};
    12        int arr1[10] = {11,22,33,44,55,66,77,88,99,100};
    13        int arr2[10] = {1,2,3,4,5,6,7,8,9,10};
    14        
    15        for ( i = 0; i < 10; i ++ )
    16        {
    17            sum[i] = add(arr1[i],arr2[i]);
    18        }
    19        
    20    }(gdb) l
    Line number 21 out of range; demo1.c has 20 lines.
    (gdb) b 5
    Breakpoint 1 at 0x400550: file demo1.c, line 5.
    (gdb) b 17 if i = 5
    Breakpoint 2 at 0x40063a: file demo1.c, line 17.
    (gdb) info b
    Num     Type           Disp Enb Address            What
    1       breakpoint     keep y   0x0000000000400550 in add at demo1.c:5
    2       breakpoint     keep y   0x000000000040063a in main at demo1.c:17
        stop only if i = 5
    (gdb) 

    6.可以取消断点 disable + 断点号,或delete + 断点号

    7.命令run,让程序跑起来,在断点处停下

    8.命令s,(step)单步执行,p + 变量名,打印变量的值

    9.display + 变量名 ,每次都显示变量的值

     10.ptype 变量名——查看变量类型
     
     11.bt  查看当前程序函数栈帧使用基本情况
       函数的栈帧保存局部变量和临时值,形参,与局部变量等价。
     
    12. info locals 查看当前栈帧上变量的存储值。
     
     13.frame 栈帧编号查看变量的值
     
     s——step
     n——next
    14. finish 终止当前函数
    15.continue 结束当前断点调试
    16.
     p *数组名@10 列出数组前10个元素值
     p 数组名[n]@m 从下标n开始向后打印m个元素。
  • 相关阅读:
    Jar包管理规范
    Base64编码原理与应用
    MySQL 5.7.14安装说明,解决服务无法启动
    idea注册
    Oracle 如何对中文字段进行排序
    SVN错误:Attempted to lock an already-locked dir
    排序算法
    设计模式
    分层
    阿里云
  • 原文地址:https://www.cnblogs.com/xiangtingshen/p/10422902.html
Copyright © 2011-2022 走看看