如何使用vscode调试nginx
在 nginx 开发过程中,经常对其进行代码调试。通过调试不仅可以帮助我们快速定位问题,也可以帮助我们快速的学习和熟悉代码。
这篇文章来总结记录一下,如何使用 vscode 进行 nginx 开发调试。Nginx 虽然是跨平台,但一般我们是在 Linux 系统上进行开发和运行的,所以下边介绍的调试方式是基于远程 Linux 服务器进行调试的。
远程连接
我们要调试的是远程 Linux 服务器上的 nginx 程序,所以首先要先连接到远程服务器。在 vscode 上连接远程 Linux 服务器,需要安装 Remote-SSH
插件。
该插件的安装方法很简单,直接在 vscode 扩展功能中搜索 Remote-SSH
即可下载安装。
安装完成后,可以看到 vscode 左侧栏新增一个 Remote Explorer
功能图标。通过对应 +
新增按钮,输入远程 Linux 服务器的 SSH 信息即可远程连接
注:首次连接 Linux 服务器,需要初始化下载一些软件,速度可能会慢些,请耐心等待
远程调试
1. 安装依赖
我们要调试的是 nginx 程序,是用 C 语言写的,使用 vscode 调试程序本质上还是依赖于 gdb
调试器的,所以我们要先安装 gdb
1 | $ apt-get install gdb -y |
2. 安装必要的扩展
推荐安装 C/C++
扩展
3. 远程调试
打开对应的 nginx 项目,因为是首次调试,所以需要通过菜单 Run
→ Add Configuration
添加调试相关的配置信息
会在 Linux 服务器下打开 .vscode/launch.json
文件,内容如下
1 | { |
name
调试配置的名称,根据情况进行调整,一般默认即可type
表示调试的程序类型,vscode 会根据代码类型自动判断,这里默认生成了cppdbg
表示调试的是 C 程序request
表示是启动程序,还是 attach 方式,我们一般是选择 launchprogram
指定要调试的二进制程序,也就是二进制的路径args
程序运行时的参数,如果没有参数可以不指定
其它参数,我们一般不用管,默认即可
对于调试 nginx 程序,我们一般要关闭守护进程和 Master 进程,所以需要修改 args 参数
1 | ["-g", "master_process off;daemon off;"] |
上述信息配置完毕后,就可以按 F5
来使用调试的方式启动 Nginx 程序了,具体的调试用法在这里就不再详细赘述了。
注意,编译 nginx 时需要设置调试参数,方法很简单直接修改 objs/Makefile
中的 CFLAGS
变量
1 | # 增加如下设置,再执行 make 进行编译 |
自动编译
我们一般在开发过程中进行调试,代码会经常需要修改测试,那就需要频繁手工进行执行编译 make 操作。vscode 提供了一种方式,允许在 launch 前执行一些操作,可以通过创建 Task 来完成,具体操作很简单。
通过菜单操作 Terminal
→ Configure Tasks
,会打开文件 .vscode/tasks.json
内容如下
1 | { |
label
可以理解为名称,在launch.json
需要指定type
表示要执行任务的类型,shell
表示要执行 shell 脚本command
就是我们要执行的 shell 命令,我们 nginx 编译时只需要 make 即可
上述其它参数,可以先不用管,按照上述配置即可
上述配置完之后,需要在 launch.json
配置中增加一项,表示在 launch 前执行名为 build
的 Task
1 | { |
这样就大功告成了,赶快去修改下代码,重新按 F5
进入调试程序,看看自动编译的配置是否生效