Sublime Text配置GDB调试环境
《Sublime Text运行C和C++程序》一节中,给大家详细介绍了怎样使 Sublime Text 具备编译、运行 C、C++ 程序的能力。在此基础上,本节给大家讲解:如何为 Sublime Text 配备 GDB 调试环境,从而可以直接调试在 Sublime Text 中编写的程序?
注意,要想为 Sublime Text 配备 GDB 调试环境,则必须确认当前系统环境中已经安装好了 GDB 调试器。以 Windows 平台为例,打开命令行窗口并执行 gdb -v 命令,如果打印出 GDB 调试器的相关信息(如图 1 所示),则表明当前系统中已经安装好了 GDB。为 Sublime Text 配备 GDB 调试环境,其本质是令 Sublime Text 具备调用 GDB 调试器的能力。也就是说,当我们需要调试在 Sublime Text 中编写的代码时,无需手动打开 GDB 调试器,Sublime Text 可以自行调用 GDB 调试器,并以当前文件作为调试对象打开 GDB,等待我们输入 GDB 调试指令。
图 1 Windows平台成功安装了 GDB 调试器
如果当前系统环境未安装 GDB,Windows 平台的读者可阅读《Windows平台安装GDB调试器》一节;Linux 平台的读者可阅读《GDB下载和安装教程》一节。
Windows平台配置Sublime Text
在已安装好 Sublime Text 编辑器的基础上,为其配置 GDB 调试环境的过程如下(以调试 C 语言程序为例):1) 在 Sublime Text 的菜单栏中依次选择
Tools -> Build System -> New Build System
,此时会生成如图 2 所示的临时文件:图 2 Sublime Text配置文件
2) 将图 2 所示文件中的内容全部删除,然后将以下内容拷贝到文件中:
{
"cmd": ["gcc","-g","${file}","-o", "${file_path}/${file_base_name}"],
"file_regex":"^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir":"${file_path}",
"selector": "source.c",
"variants":
[
{
"name": "GDB_C",
"cmd": ["cmd", "/c", "gcc","-g", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "cmd", "/c", "gdb", "${file_path}/${file_base_name}"]
}
]
}
拷贝完成后,按 Ctrl+S 组合键保存此文件,对于调试 C 语言程序的配置文件,我将其重命名为 gdb_c.sublime-build。如果读者想调试 C++ 程序,可直接将其中的 gcc 全部改成 g++ 即可。当然,这样配置的 Sublime Text 仅能调试普通的 C、C++ 程序,那些引入非标准库或者第三方库的程序,需要在 2 个 "cmd" 行中的 gcc 或者 g++ 命令中注明要使用的系统库。
由此,Sublime Text 就具备了调用 GDB 调试 C、C++ 程序的能力。以调试简单的 C 语言程序为例:
#include <stdio.h> int main () { char * url="https://www.xinbaoku.com/gdb/"; printf("%s",url); return 0; }读者可以将此示例程序拷贝到 Sublime Text 中,并为其命名以 .c 为后缀名的文件。在此基础上,在菜单栏中选择 Tools -> Build System -> gdb_c(即以我们自定义的方式编译指定文件),然后选择 Tools -> Build System,此时 Sublime Text 会弹出如下图所示的选项框:
图 3 选择具体的调试选项
可以看到,正如 gdb_c.sublime-build 文件配置的那样,这里显示了 2 个调试选项,第一个用于仅生成可供 GDB 调试的可执行文件,第二个选项不仅会生成可调式的执行文件,还会自动调用 GDB 并启动调试。例如,我们选择第二个选项,此时会进入 GDB 调试环境:
图 4 Sublime Text 自行启动 GDB 调试环境
感兴趣的读者,可尝试使用第一个选项,其会在该程序文件同目录的位置,生成可供 GDB 调试的可执行文件。
Linux平台配置Sublime Text
Linux 平台配置 Sublime Text 的过程,和 Windows 平台配置 Sublime Text 的过程完全一致。唯一不同的一点在于,gdb-c.sublime-build 配置文件中的内容有所差异。以 Ubuntu 为例,其配置文件中的内容如下所示:
{
"shell_cmd": "gcc -g \"$file_name\" -o \"$file_base_name\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c",
"working_dir": "$file_path",
"variants":
[
{
"name": "gdb_c",
"shell_cmd": "gcc -g \"$file_name\" -o \"$file_base_name\";gnome-terminal -x gdb \"$file_base_name\""
}
]
}
其它操作和在 Windows 平台上配置 Sublime_text 完全相同,这里不再重复赘述。注意,不同的 Linux 发行版,调用命令行窗口的方式不同。以 Ubuntu 为例,使用 gnome-terminal -x 命令启动命令行窗口。
Mac OS X配置Sublime Text
Mac OS X 平台配置 Sublime Text 的过程,也和 Windows 平台配置 Sublime Text 的过程完全一致,但需要修改 gdb-c.sublime-build 配置文件中的内容:
{
"shell_cmd":"gcc -g \"$file_name\" -o \"$file_base_name\"",
"selector":"source.c",
"working_dir":"$file_path",
"variants":
[{
"name":"gdb_c",
"shell_cmd":"gcc -g \"$file_name\" -o \"$file_base_name\";open -a terminal.app /usr/local/bin/gdb"
}]
}
注意,根据此配置文件,当我们选用 gdb_c 选项调试程序时,其只能自行打开 Terminal 命令行窗口并启动 GDB 调试器,但无法立即调试目标程序,还需手动在 GDB 中借助 file 命令指定要调试的目标程序,例如:
(gdb) file /tmp/demo/main.exe
Reading symbols from /tmp/demo/main.exe...
(gdb)
再次强调,启动 GDB 并不意味着可以立即调试程序,至于为什么,读者可阅读《gdb run(r)命令》一节做详细了解。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算