zoukankan      html  css  js  c++  java
  • Linux知识(5)----LINUX下GDB调试

    命令

    解释

    示例

     

    file

    加载被调试的可执行程序文件。因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。

    (gdb) file gdb-sample

     
     

    r
    c

    Run的简写,运行被调试的程序。如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。

    (gdb) r
    (gdb) c

     
     
     


    b*
    d[编号]

    b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。
    d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。

    (gdb) b 8
    (gdb) b main
    (gdb) b *main
    (gdb) b *0x804835c
    (gdb) d

     
     
     
     
     

    s, n

    s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数;
    n: 执行一行源程序代码,此行代码中的函数调用也一并执行。s 相当于其它调试器中的“Step Into (单步跟踪进入)”;
    n 相当于其它调试器中的“Step Over (单步跟踪)”。这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。

    (gdb) s
    (gdb) n

     
     
     
     
     

    si
    ni

    si命令类似于s命令,
    ni命令类似于n命令,
    所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。

    (gdb) si
    (gdb) ni

     
     

    p

    print的简写,显示指定变量(临时变量或全局变量)的值。

    (gdb) p I
    (gdb) p nGlobalVar

     
     

    display …
    undisplay

    display,设置程序中断后欲显示的数据及其格式。例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令“display /i $pc”其中 $pc 代表当前汇编指令,/i 表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。
    undispaly,取消先前的display设置,编号从1开始递增。

    (gdb) display /i $pc
    (gdb) undisplay 1

     
     
     
     
     

    参考资料:

    1、LINUX下GDB调试

  • 相关阅读:
    Postgresql HStore 插件试用小结
    postgres-xl 安装与部署 【异常处理】ERROR: could not open file (null)/STDIN_***_0 for write, No such file or directory
    GPDB 5.x PSQL Quick Reference
    postgresql 数据库schema 复制
    hive 打印日志
    gp与 pg 查询进程
    jquery table 发送两次请求 解惑
    python 字符串拼接效率打脸帖
    postgresql 日期类型处理实践
    IBM Rational Rose软件下载以及全破解方法
  • 原文地址:https://www.cnblogs.com/cv-pr/p/4839668.html
Copyright © 2011-2022 走看看