Sublime Text:Windows下配置C 编译环境和GDB调试环境

时间:2022-12-16 14:51:03

  写此文解决两个问题:

  1.在Sublime Text中实现编译运行含有外部输入的C程序(如含有scanf的程序);

  2.在程序运行完毕后不退出cmd,能继续用gdb调试程序。

一、MinGW

下载地址:https://sourceforge.net/projects/mingw/,点击”download“后等待几秒钟便会弹出下载框。

相关介绍:http://blog.csdn.net/k1988/article/details/4375382(没找到原作者地址,引用了一篇转载的)

安装与配置参考:http://jingyan.baidu.com/article/455a99509c76d8a1662778f6.html

二、配置Sublime Text

1) 按下图添加新的编译系统

Sublime Text:Windows下配置C 编译环境和GDB调试环境

2) 在弹出的页面中复制以下代码(双击代码区域可全选),"Ctrl+s"保存为C.sublime-build。

部分参数解释:(自己摸索的,不一定准确,供参考)
${file_path}:文件目录路径
${file_base_name}:不包含扩展名部分的文件名(如 test.c 的 file_base_name 为 test )
"selector":"source.c":操作的文件类型为 .c 文件
"encoding":"cp936":支持中文字符集
"cmd","/k":执行完毕后不退出shell (/k 是 cmd 的参数)
"variants":变量,这里定义了"Run"和"RunInCommand"两个变量
Run:用于无外部输入(如scanf)的情况
RunInCommand:用于有外部输入或需要调试的情况,将打开cmd窗口,程序运行完毕后可用命令“gdb xxx.exe”调试程序

{
"cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c",
"encoding":"cp936", "variants":
[
{
"name": "Run",
"cmd": ["cmd", "/c", "gcc", "${file}", "-o", "${file_path}/${file_base_name}", "&&","${file_path}/${file_base_name}.exe"]
},
{
"name": "RunInCommand",
"cmd": ["cmd", "/c", "gcc","-g", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "cmd", "/k", "${file_path}/${file_base_name}"]
}
]
}

3) 按下图创建快捷命令,Key Bindings不一定在"CTags"中,找到打开即可;

Sublime Text:Windows下配置C 编译环境和GDB调试环境

4) 在文件中添加如下内容并保存,具体快捷键可自行设置

alt+r:启用Run编译运行程序

alt+g:启用RunInCommand编译运行程序

[
{"keys": ["alt+r"], "command": "build", "args": {"variant": "Run"}},
{"keys": ["alt+g"], "command": "build", "args": {"variant": "RunInCommand"}}
]

5) 完毕。下图是运行效果。测试文件为一个排序算法sort.c

alt+r,结果将在Sublime中显示

Sublime Text:Windows下配置C 编译环境和GDB调试环境

alt+g,结果将在cmd窗口中显示,且执行完毕后不退出窗口,后续可用gdb调试程序。

Sublime Text:Windows下配置C 编译环境和GDB调试环境

-----------------------------------------------------

* 本文是根据自身经验所作,难免存在不合理之处。

* 以上内容为作者原创,转载请注明出处。
-----------------------------------------------------