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 *[email protected]

② p (int [10])*10

whatis 可以显示某个变量的类型 whatis p
info 用于显示各类信息 如:info b 显示断点信息

info r 寄存器信息

info local 显示当前函数中的局部变量信息

info prog 显示被调试程序的执行状态

quit 退出gdb调试 q

时间: 2024-10-29 04:06:30

emacs编译和调试程序的相关文章

emacs的简单使用和配置

emacs的使用 Ted posted @ 2008年9月16日 22:35 in emacs with tags emacs , 5455 阅读 一.emacs编辑器简介 emacs编辑器是由C语言和LISP语言编写的.LISP(链表处理语言)是由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言. 我们可以使用LISP来扩展emacs,从而为emacs添加更多的命令.(补:emacs -nw:以命令行的方式来运行emacs,而不启动GUI界面) * 自动保存功能 如果你已经修改

Emacs写简单C程序

提要:Emacs学习路线,MinGW配置,C\C++命令行编译 emacs是个强大的软件,学习emacs在很长时间内都很有用. 开始emacs之旅之前,我先到网上查了一下.发现几乎所有人都认为Emacs是可以很折腾的.这与我的观点不合.我认为工具应该不是拿来折腾的,而是用来解决问题的. 所以当我搜到了http://blog.csdn.net/redguardtoo/article/details/7222501(一年成为emacs高手)这篇文章时,作者在文章中提到的用实际问题推动学习的观点一下子

Storm单机版的安装与配置

在配置一个Storm环境之前,首先需要一个Linux操作系统.常见的linux系统有CentOS.Red Hat.Ubuntu等,我使用的是Ubuntu 14.04.系统尽量是最新的,对于旧版本的ubuntu,软件源支持不太好,apt-get install会发生错误 总的来说,storm安装配置需要如下几个步骤: 安装java jdk 安装python 安装zookeeper 安装zeromq, jzmq 安装storm 安装Java JDK 什么是JDK?JDK(Java Developme

回忆曾经写过的第一个Bash脚本

这盘文章,算是杂谈吧,想谈谈我对于Linux操作系统的灵魂之笔 Bash的理解. 据说Shell脚本有50种之多(陈皓老师的酷壳网上有一篇博文 http://coolshell.cn/articles/8619.html 提到),现在,用Linux调试大大小小程序,除了使用Makefile,偶尔用用CMakeList.txt, 更多程序是用bash 脚本来实现半自动化调试,就像在VS下面,每次修改重新编译一样,你总是 gcc 或者 g++,然后 ./test 运行,然后再看看有没有错,编译出错又

JDK,JRE,JVM的区别

在lua,cocos-2d的开发中,需要用到java的东东,这些东东之间的联系往往不是很清楚明了,于是整理了下... 下图很好的表面了JDK,JRE,JVM三者间的关系: JDK Java Development Kit(JDK) 是 Java 语言的软件开发工具包(SDK).作为Java语言的SDK,普通用户并不需要安装JDK来运行Java程序,而只需要安装JRE(Java Runtime Environment).而程序开发者必须安装JDK来编译.调试程序. SE(J2SE),standar

jvm内存模型及分配

1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的.(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域.(3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行.JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行. 2.jdk.jre.jvm是什么关系?(1)JRE(Java

快速配置 Samba 将 Linux 目录映射为 Windows 驱动器,用于跨平台编程

快速配置 Samba 将 Linux 目录映射为 Windows 驱动器,用于跨平台编程  大 | 中 | 小  [ 2011-4-8 08:53 | by 张宴 ] [文章作者:张宴 本文版本:v1.0 最后修改:2011.04.08 转载请注明原文链接:http://blog.zyan.cc/samba_linux_windows/] 一.局域网内的 Linux 服务器上操作步骤: 1.安装samba(CentOS Linux): yum install samba system-confi

jvm内存模型和内存分配

1.什么是jvm? (1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的. (2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域. (3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行. JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行. 2.jdk.jre.jvm是什么关系? (1)JRE(

大波Java来袭(一)JDK安装与环境变量的配置

一.基础知识 (一)什么是Java? Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称. (二)什么是JDK?   学习Java编程时,首先要做的就是搭建开发环境.就像师傅在修车之前,需要搭建一个修车厂,准备好修车所需要的环境和工具一样.这里呢?!Java的开发环境就是JDK,是Java Development Kit的缩写,意思是