• Emacs中学习gdb调试


    Emacs中学习gdb调试

    1. 编译

    • 首先,编辑好c++程序(以c++例),如test.cpp

    • 然后,编译M-x compile,把那一行命令改成g++ test.cpp -g -o test,参数“-g”是为了加入调试信息。要不然后面的调试不成功

    2.进入gdb

    • 直接M-x gdb

    • 显示gdb –annotate=3 test回车就进入了调试模式。

    • 界面如下:

    123_thumb[2]

    不同的annotate 的值不代表不同的模式:

    • annotate = 0是最基本的模式和在命令行使用gdb完全一样。

    • annotate = 1是单步调试模式,出现上下两个窗口,上面是gdb运行的buffer,下面是你代码的buffer,会在代码 buffer中,同步指示当前运行的语句的位置。

    • annotate = 2是产生注解的模式。

    • annotate = 3是信息最完整的模式。此时的 Emacs 分5个 buffer,从上到下、从左到右依次是:gdb 调试窗口、变量实时变化显示窗口、源代码窗口、栈窗口、断点信息

    无论上面的那种情况,都出现了一个现象:程序的输出不能显示,只有在程序退出的时候才显示出来。

    gdb-many-windows 切换单窗格/多窗格模式

    gdb-restore-windows 恢复窗格布局

    3. 调试

    常用的调试命令,可以简写

    命令意义用法
    list从第一行开始列出源码(默认10行)  l 
      l 3 (开始行)
    break

    设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。 
    其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。

      b <行号> 
      b <函数名称> 
      b *<函数名称> 
      b *<代码地址>

    run开始调试程序  r
    continue继续执行被调试程序,直至下一个断点或程序结束。  c
    clear删除特定行的断点  clear <行号>
    delete删除断点,编号从1开始  d <编号>
    next line执行一行源程序代码,此行代码中的函数调用也一并执行。  n
    step line执行一行源程序代码,如果此行代码中有函数调用,则进入该函数  s
    until结束当前循环  until
    print可以检查各个变量的值,数组的值,以及函数等print p (p为变量名) 
    print $1 ($1为历史记录变量,在以后可以直接引用 $1 的值) 
    显示数组: p <数组名> 
    显示数组元素:p <*数组指针> 
    显示数组int a[N]的特定值: 
    ① p *a@10 
    ② p (int [10])*10 
    whatis可以显示某个变量的类型whatis p
    info用于显示各类信息如:info b 显示断点信息 
    info r 寄存器信息 
    info local 显示当前函数中的局部变量信息 
    info prog 显示被调试程序的执行状态
    quit退出gdb调试q

     

    本文参考,特此声明:

    http://fanqiang.chinaunix.net/program/other/2006-07-14/4834.shtml

    http://blog.csdn.net/liigo/article/details/582231

    http://www.cnblogs.com/dodolook/archive/2011/05/31/2064363.html

  • 相关阅读:
    Codeforces Round #260 (Div. 1) A
    cdoj 1131 男神的礼物 区间dp
    bzoj2435: [Noi2011]道路修建 树上dp
    hdu 4597 Play Game 区间dp
    cdoj 31 饭卡(card) 01背包
    hdu5256 序列变换 dp LIS
    BZOJ 4027: [HEOI2015]兔子与樱花 树上dp
    Codeforces Round #202 (Div. 1) D. Turtles dp
    hdu 4114 Disney's FastPass 状压dp
    Python help() 函数
  • 原文地址:https://www.cnblogs.com/lexus/p/2559094.html
Copyright © 2020-2023  润新知