gdb编译命令

作者: 雪域狼王jayh | 来源:发表于2019-07-04 10:26 被阅读0次

    在我的工作中曾经尝试过使用gdb来编译python。
    目前我了解到可以用gdb来跟踪C/C++程序的运行情况


    1.编译程序
    gcc swap.c -std=c99 -g
    生成可执行程序a.exe (在linux下是a.out) 其中编译选项-g告诉编译器生成调试信息

    2.运行gdb
    gdb a.exe
    gdb运行时会自动装入刚才生成的可执行程序

    3.查看源码

    (gdb) l
    

    字母l是输入的命令,为list(列出程序清单)的缩写。

    4.加断点并运行

    (gdb) b 4
    BreakPoint 1 at 0x401308: file swap.c, line 4 
    (gdb) r
    Starting program: D:\a.exe
    (etc..)
    

    b命令把断点设置在第4行.r命令运行程序,碰到断点就停止
    b swap命令也可以设置断点(swap是函数名),这样断点将设置在swap函数的开头
    (etc..) 表示后面还有打印出来的信息,但笔者觉得写出来意义不大,因此省略

    5.查看调用栈

    (gdb) bt
    #0 swap(a=4,b=3) at swap.c:4
    #1 0x00401356 in main() at swap.c:8
    (gdb) p a
    $1 = 4
    (gdb) up
    #1 0x00401356 in main() at swap.c:8
    8         swap(3,4);
    (gdb) p a
    $3 = 3
    
    命令名 作用
    bt 查看调用栈中所有的栈帧,其中#0为当前栈帧
    p 打印变量的指令,print的首字母缩写
    up 选择当前栈帧的上一个栈帧
    q 退出gdb
    s 单步调试

    相关文章

      网友评论

        本文标题:gdb编译命令

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