• gdb便利用法


    1,不退出gdb,执行shell命令

    (gdb) shell ls
    a.out  foo  more.c  pipe1.c  test1.c  test.c
    (gdb) shell gcc test.c -g
    

    2,不退出gdb,执行make命令

    (gdb) make
    

    3,保存GDB 命令的输出到一个文件里

    • set logging on

      激活日志功能.

    • set logging off

      关闭日志功能.

    • set logging file file

      改变当前的logfile 名字. 默认的logfile 是‘gdb.txt’.

    • set logging overwrite [on|off]

      默认的,gdb 会以附加的方式保存日志。如果你想改为覆盖方式保存的话,可以设置为覆盖方式。

    • set logging redirect [on|off]

      默认的,gdb 输出会打印到终端和logfile。可以将终端重定向到logfile 里,如果你只要它输出到logfile 里。

    • show logging

      显示当前日志设置

    4,path和环境变量

    • path directory
      在PATH 环境变量的前头加上diretory(可执行程序的搜索路径)。

    • show paths

      显示可执行程序的搜索路径列表(PATH 环境变量)。

    • show environment [varname]

      打印名为varname 的环境变量的值。如果你没提供varname,打印所有的环境变量的名
      称和值。你可以缩写environment 为env.

    • set environment varname [=value]

    5,调试一个已经在运行的进程

    (gdb) attach process-id
    

    6,checkpoint功能

    在某些操作系统(目前只在GNU/Linux 上),GDB 可以保存一个程序状态的快照,称为检查点,以后可以跳回。跳回到检查点会撤销所有在检查点之后的变化。这些变化包括内存,寄存器,甚至系统状态(有些限制)。这样可以有效的及时回到在检查点设置的状态。
    因此,如果你单步调试到你认为你接近到快要发生错误的地方,你就可以保存一个检查点。接着,如果你不经意的走的太远错过了关键的状态,你可以回到检查点后再从那里开始,而不需要从头启动程序。
    检查点对于需要很长时间或者单步调试里bug 发生地方很远的情况下很有帮助。

    • checkpoint

      保存被调试程序当前执行状态的快照。checkpoint 命令不需要参数,但每个检查点都分
      配一个小整数标识,如同breakpoint 标识一样。

    • info checkpoints

      列出在当前被调试会话的检查点。对于每个检查点,信息显示如下:
      Checkpoint ID
      Process ID
      Code Address
      Source line, or label

      (gdb) info checkpoints
        1 process 20516 at 0x4006e9, file test.c, line 30
      * 0 process 20512 (main process) at 0x4006e9, file test.c, line 30
      
    • restart checkpoint-id

      在检查点号的状态上重新启动。所有程序变量,寄存器,栈帧等等都恢复到检查点上保
      存的状态。本质上将,gdb 会把时钟回拨到检查点所记录的时间。

    • delete checkpoint checkpoint-id

      删除以前保存的检查点

    c/c++ 学习互助QQ群:877684253 本人微信:xiaoshitou5854

  • 相关阅读:
    外部编辑Infopath的表单模板(xsn)
    安装SQL Server 2008时可能遇到性能计数器不一致的情况
    Windows应用程序中使用Windows验证方式要注意的地方
    在MOSS 2007中使用Web Capture这个WebPart
    MOSS 配置SSO的时候可能遇到"您没有执行此操作的权限"的错误
    基于Web的操作系统,是否有可能?
    ASP.NET 中对于异常的处理
    在读取站点地图时自动应用安全设置
    JavaScript中的Window窗口对象【转载】
    当动态TSQL语句遇到除零的问题
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/12622203.html
Copyright © 2020-2023  润新知