本文介绍如何在sublime text中,通过安装 SublimeGDB 插件,实现方便的图形界面的调试。
在之前的文章 sublime text 3配置c/c++编译环境 中,我们介绍了使用sublime text 3编译和运行c/c++代码的方法。但是,只能一键运行代码,却不能单步调试不免让人有点不爽。虽然windows下面调试代码还是VS更好用一些,但有时候我们只有一个简单的cpp文件,再开VS建工程就有点大材小用了。
准备工作
安装MinGW
这里的准备工作就是要安装要使用到的工具 gcc g++和gdb 。关于这些的详细情况可以参考安装MinGW,这里只把步骤重复一遍:
1. 下载MinGW
这里提供了 codeblocks-13.12mingw-setup 中提取出来的MinGW:
http://pan.baidu.com/s/1gd5YzVP
解压后把MinGW文件夹放到c盘根目录
2. 添加环境变量
右键计算机->属性->高级系统设置->环境变量
在path的值中,可以发现有一些目录,他们之间用英文的分号分隔。我们双击path,把我们gcc的路径 C:\MinGW\bin 添加进去。 要注意前后的英文分号。
测试
上面的步骤做完后,请重启windows。(不重启的话虽然cmd中可以使用gcc,但sublime中可能不会生效,会导致奇怪的问题)
在D盘test目录下新建main.cpp ,内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <cstdio> int main() { int a = 3; int b; a = a + 2; b = a + 2; printf("%d\n", b); return 0; } |
然后在空白处按住shift点击右键,选择 在此处打开命令窗口。
执行
1 2 |
g++ -g main.cpp -o main gdb main |
第一句会生成一个可供调试的main.exe可执行文件,第二句会进入gdb调试
在gdb中,使用start开始运行,输入n执行下一句,输入i locals查看当前变量
如果你输入i locals后,能看到变量的值,就成功了一半了。
安装 SublimeGDB
使用Package Control来安装,如果你没有安装过Package Control,可以参考 安装Package Control
然后通过菜单Preferneces -> Package Control打开, 选择 Install Package
然后输入SublimeGDB,点击就可以安装了。
修改配置文件
依次选择Preferneces -> Package Settings -> SublimeGDB -> Settings – User
输入下面的内容
1 2 3 4 |
{ "workingdir": "${folder:${file}}", "commandline": "g++ -g -std=c++11 ${file} -o ${file_base_name} && gdb --interpreter=mi --args ./${file_base_name}", } |
保存。重启sublime。
使用SublimeGDB
光标置于某一行,按F9键,会加入一个断点
设置好断点后,按F5键启动调试
默认的快捷键(可以通过修改Default.sublime-keymap修改快捷键)
按键 | 功能 |
F5 | 开始调试 |
Ctrl+F5 | 停止调试 |
F9 | 设置断点 |
F10 | Step over,执行一步,不进入函数 |
F11 | Step into,进入函数 |
Shift+F11 | Step out,跳出函数 |
在GDB Callstack点击可以跳转到对应函数处。
在窗口 GDB Variables 里可以查看变量的值,双击变量可以修改变量的值。如果变量名左边有加号,可以展开查看子变量。
在最下面GDB窗口可以输入gdb命令来运行,可以参考 gdb调试新手入门(一) | 雅乐网
还可以使用右键GDB菜单来实现这些功能
这篇文章中给出的commandline在sublime text3中是不适用的。正确的写法应该是去掉前面的g++部分,只保留gdb部分,然后在build cmd中加入g++,否则会出现–interpreter=mi的Invalid error message。这个貌似原作者也不打算修复了,因为readme中写明了这个项目是支持sublime text 2的。
成功解决,注意文件路径不要有中文。
麻烦您能不能把代码展示一下,到底怎么写
我的也不成功
具体是什么错误呀
照着配置,F5之后就卡住了。但是本地开cmd调试exe没问题
报错说没有用interpreter=mi, 但是的确写了。
同样的问题,有解决办法吗
同样的问题,有解决办法吗?
能否给一个多文件的配置方法?单文件可以成功,但是多文件照着default的里面的说明总是不行。
多文件的话,思路可以是把 commandline 里的g++那条命令换成make,makefile里要加入-g 这样生成一个可执行文件后 再用gdb –interpreter=mi –args 可执行文件名。具体我还没有试过,等有空的时候试下
我的为什么不成功