- 时间:2020-07-25 00:46 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:如何利用Emacs来调试C++程序
俗话说,Emacs是神的编辑器,而Vim是编辑器之神。高手程序员都是用这两样神器进行开发。本人觉得,Emacs之所以厉害,是因为许多在其他编辑器下必须用鼠标点选很多步的操作,在Emacs下都可以通过键盘来完成。大大地节省了你在显示器上找按钮的时间。Emacs在Linux上运行感觉比windows流畅些,用Emacs编辑程序时,手基本不用离开键盘,就可以完成所有的工作。那么今天就让我们看看如何利用Emacs来调试C++程序。
[b]一、安装Emacs和GCC[/b]
下载地址:Emacs:[url=http://www.gnu.org/software/emacs/]http://www.gnu.org/software/emacs/[/url]
GCC:[url=http://gcc.gnu.org/]http://gcc.gnu.org/[/url]
[b]二、配置emacs和GCC[/b]
Emacs建议大家把显示行号打开。具体操作是:在C:\Users\maple\AppData\Roaming下有个.emacs文件,打开它,加入(global-linum-mode t)并保存,注意括号也要一并写上。
GCC添加路径到Path环境变量,确保在cmd下用g++命令能正确执行。
[b]三、写程序,编辑[/b]
我们新建一个文件,然后用Emacs打开(Emacs的操作方式有时间再介绍了,大家可以跟着里面自带的教程学习)。
[url=http://images.cnitblog.com/blog/500704/201303/08225714-fa569ba1f13e406084de5154bad5b696.png][img]http://files.jb51.net/file_images/article/201603/201603300906491.png[/img]
[/url]
我们先保存。然后利用Emacs调用GCC,按S-M-1
[url=http://images.cnitblog.com/blog/500704/201303/08225717-cb3b8757da2541499b83b5e798187134.png][img]http://files.jb51.net/file_images/article/201603/201603300906492.png[/img]
[/url]
出现让你输入shell命令,在这就是控制台命令啦。我们输入g++ testdbg.cpp -g -o testdbg.exe
[url=http://images.cnitblog.com/blog/500704/201303/08225718-0566e9b2db814e69b5024a00dc7fce72.png][img]http://files.jb51.net/file_images/article/201603/201603300906493.png[/img]
[/url]
编译正确。这时我们打开Tools->GDB进行调试,我们发现,Emacs多了几个按钮。如下图:
[url=http://images.cnitblog.com/blog/500704/201303/08225723-d408563676514231b337bea1b38f3cbb.png][img]http://files.jb51.net/file_images/article/201603/201603300906494.png[/img]
[/url]
[b]四、调试[/b]
1、设置断点
输入break 5,表示在第五行设置断点,我们发现左边多了个小红点。那就是断点的位置。
[url=http://images.cnitblog.com/blog/500704/201303/08225725-e049c037347b480d82911232a0f3cb91.png][img]http://files.jb51.net/file_images/article/201603/201603300906495.png[/img]
[/url]
2、运行程序
输入run执行程序,程序执行后停在断点处。
[url=http://images.cnitblog.com/blog/500704/201303/08225727-b5162fe68c1d47358c3b29332542505c.png][img]http://files.jb51.net/file_images/article/201603/201603300906496.png[/img]
[/url]
3、单步执行
输入step能够单步执行,在GDB中,直接按回车能重复上一步的动作。
4、打印变量
使用print 变量,能打印出当前变量的值。
[url=http://images.cnitblog.com/blog/500704/201303/08225730-35aa22de93c44951b7f3c96c9ea36dc9.png][img]http://files.jb51.net/file_images/article/201603/201603300906497.png[/img]
[/url]
[b]五、总结[/b]
使用Emacs,摆脱了各种IDE的束缚,能够极快地进行小模块的开发,Emacs还带有查看十六进制文件的功能,在linux上,替代了winhex的工作,能进行文件的比较,这些以后有时间再讲到。GDB是GCC附加的一个功能强大的调试器,深受广大程序员的喜爱,其中关于GDB的资料,大家可以查查手册。