Linux中gdb调试

作者: zhang_pan | 来源:发表于2018-03-08 17:16 被阅读54次

    编译生成调试文件:

    gcc test1.c -g -o test1
    

    其中-g参数表示用gdb调试,test1.c表示源C文件,test1是生成的可执行文件。

    安装gdb:

    apt-get install gdb
    

    进入调试:

    gdb test1
    
    1.png

    开始调试:

    start
    
    2.png
    1. 显示代码:
    list
    

    简写用字母l

    1. 查看函数内容:
    list 函数名称
    
    1. 查看某行代码:
    list 行数
    
    1. 执行下一步:
    next
    

    简写用字母n

    直接回车,还是执行上述最近的一个命令,如果上面的一个命令为n,那回车就相当于又输入了n;如果上面的一个命令为l,那回车就相当于又输入了l。

    1. 查看变量:
    print 变量名
    

    简写:

    p 变量名
    
    1. 当执行到某个函数的时候,想要进入到该函数:
    step
    

    简写用小写字母s

    1. 设置断点:
    break 行号
    

    简写为:

    b 行号
    
    1. 查看断点信息:
    info breakpoints
    
    1. 全速运行,遇到断点会停止:
    continue
    

    简写为字母c

    1. 删除断点:
    delete breakpoints 断点编号
    
    1. 修改变量的值:
    set var 变量名 = 值
    
    1. 程序调用堆栈:
    backtrace
    

    简写为bt,当前函数之前的所有已调用函数列表,每一个都分配一个“帧”,最近调用的函数在0号帧里。

    3.png
    1. 切换栈帧:
    frame 帧号
    

    切换栈帧之后,就可以查看该栈的变量了。

    1. 自动显示:
    display 变量名
    
    1. 取消自动显示:
    undisplay 行号
    
    1. 查看内存布局:
    x / 20 地址
    

    查看buff数组的前20个元素

    x / 20 buff
    
    1. 程序非正常退出,如何查看错误?
    1. ulimit -a 查看core文件是否分配大小
    2. ulimit -c 1024 创建的core文件大小为1204字节
    3. gcc test2.c -g -o test2 编译链接得到带有-g选项的可执行程序
    4. ./test2 执行程序,会生成core日志文件
    5. gdb test2 core 打开日志文件,定位错误信息到具体的代码行数

    喜欢本篇博客的简友们,就请来一波点赞,您的每一次关注,将成为我前进的动力,谢谢!

    相关文章

      网友评论

        本文标题:Linux中gdb调试

        本文链接:https://www.haomeiwen.com/subject/rhudfftx.html