从vim转向Emacs _ emacser.com文章收集

论坛 期权论坛     
选择匿名的用户   2021-5-30 00:16   192   0
<div class="content" id="articleContent">
<span style="font-size:18px;"> </span>
<h2>在Emacs中使用gdb调试程序</h2>
<h3><a href="http://emacser.com/emacs-gdb.htm">http://emacser.com/emacs-gdb.htm</a></h3>
<h3> </h3>
<h3><img alt="archer.jpg" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-045617899261064fcb9f10a40c102f6f.jpg" title="CEDET"></h3>
<h3> </h3>
<div>
  <ul><li><a href="http://emacser.com/emacs-gdb.htm#sec-1">1 引言 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-2">2 准备工作:将调试信息编译在程序中 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-3">3 开始:开启Emacs的调试模式GUD </a>
    <ul><li><a href="http://emacser.com/emacs-gdb.htm#sec-3.1">3.1 运行gdb </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-3.2">3.2 gdb界面 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-3.3">3.3 小结 </a></li></ul></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-4">4 调试:设置断点,控制程序流程 </a>
    <ul><li><a href="http://emacser.com/emacs-gdb.htm#sec-4.1">4.1 设置、删除断点 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-4.2">4.2 运行程序 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-4.3">4.3 单步执行、运行到光标处 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-4.4">4.4 继续运行程序 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-4.5">4.5 小结 </a></li></ul></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-5">5 察看变量的值 </a>
    <ul><li><a href="http://emacser.com/emacs-gdb.htm#sec-5.1">5.1 本地变量buffer </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-5.2">5.2 察看变量值 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-5.3">5.3 用工具提示显示变量值 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-5.4">5.4 小结 </a></li></ul></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-6">6 输入输出 </a>
    <ul><li><a href="http://emacser.com/emacs-gdb.htm#sec-6.1">6.1 单独的IO buffer </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-6.2">6.2 输入数据 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-6.3">6.3 重定向到文件 </a></li></ul></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-7">7 按键绑定 </a></li><li><a href="http://emacser.com/emacs-gdb.htm#sec-8">8 结尾 </a></li></ul>
</div>
<h3></h3>
<h3>1 引言 </h3>
<div class="outline-text-2">
  <p>Emacs除了具有强大的编辑功能,还可以作为调试工具gdb的前端,对程序进行调试。使用Emacs进行调试,可以将程序的编写与调试统一到Emacs中,并利用Emacs强大的功能辅助调试,是将Emacs作为IDE使用的一项必备功能。 </p>
  <p>本文假定读者具有基本的程序调试知识,希望知道在Emacs下进行基本调试的对应操作。水平有限,欢迎拍砖。 </p>
</div>
<h3></h3>
<h3>2 准备工作:将调试信息编译在程序中 </h3>
<div class="outline-text-2">
  <p>要使程序能被gdb调试,需要在编译时加入调试所需的信息。如果使用gcc/g&#43;&#43;进行编译,需要使用参数-g,如: </p>
  <div class="wp_codebox_msgheader">
   <sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples"><span style="color:#99cc00;">?</span></a></sup>
   View Code BASH
   <div class="codebox_clear"></div>
  </div>
  <div class="wp_codebox">
   <table><tbody><tr><td><pre class="bash"><code><span style="color:#c20cb9;font-weight:bold;">gcc</span> prog.c <span style="color:#660033;">-g</span> <span style="color:#660033;">-o</span> prog</code></pre></td></tr></tbody></table>
  </div>
  <p>如果使用 ./confiugre &amp;&amp; make 的编译流程,可以将使用如下方式引入-g参数: </p>
  <div class="wp_codebox_msgheader">
   <sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples"><span style="color:#99cc00;">?</span></a></sup>
   View Code BASH
   <div class="codebox_clear"></div>
  </div>
  <div class="wp_codebox">
   <table><tbody><tr><td><pre class="blockcode"><code>1
2</code></pre></td><td><pre class="bash"><code><span style="color:#007800;">CFLAGS</span>&#61;<span style="color:#ff0000;">&#34;-g&#34;</span> .<span style="color:#000000;font-weight:bold;">/</span>configure<span style="color:#c20cb9;font-weight:bold;">make</span></code></pre></td></tr></tbody></table>
  </div>
  <p>注意:不要加入任何优化参数(例如-O、-O2),不然调试时会有很灵异的现象发生…… </p>
</div>
<h3></h3>
<h3>3 开始:开启Emacs的调试模式GUD </h3>
<div class="outline-text-2"></div>
<div class="outline-3">
  <h4>3.1 运行gdb </h4>
  <div class="outline-text-3">
   <p>在编译好程序后,就可以开始调试了。直接运行gdb命令M-x gdb RET 在minibuffer中会出现需要执行的gdb命令。例如:gdb –annotate&#61;3 prog 如果当前目录下有可执行文件(通常恰好是需要调试的文件),gdb会在其后自动补上可执行文件,否则需要在minibuffer中补上要调试的程序文件名。 </p>
   <p>继续回车,Emacs的GUD&#xff
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP