emacs编译和调试程序

一、emacs中编译C程序

                    输入 M-x compile  ,然后输入gcc  test.cpp -g -o test  

二、emacs中运行C程序:

我们在Emacs 中运行它:M-! ~/hello。在小缓冲区中,我的输出是:“hello, world!”


三、开启emacs的GDB调试

 我们输入M-x gdb就进入了调试模式啦。

                   命令gdb_many-windows 功能:切换单窗格/多窗格模式

       命令gdb-restore-windows 功能:恢复窗格布局

或者gdb  -annotate=3  test   回车  就进入了调试模式。

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

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

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

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


四. 调试命令

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


命令 意义 用法
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





郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。