VS CODE 輕鬆除錯 Nginx
VS CODE簡直是太強大了,不僅僅是前端開發利器,用來除錯HotSpot、Nginx也是棒棒的!最關鍵還免費!
最近剛好在研究Nginx,下面來講講如何用VS CODE 除錯Nginx。
一:編譯執行Nginx
- 修改 /auto/cc/conf 檔案,將ngx_compile_opt="-c" 修改為 ngx_compile_opt="-c -g"
- 執行 sudo ./auto/configure --prefix=nginx工程目錄 ,如果遇到錯誤 "the HTTP rewrite module requires the PCRE library",就執行下brew install pcre
- 執行 sudo make
- 執行 ./objs/nginx,開啟瀏覽器訪問下 127.0.0.1,沒問題的話就可以看到Nginx的歡迎介面了。

二:除錯Master程序
Nginx執行模式分為Master程序和Worker程序,讓我們先來除錯下Master程序吧
- 關掉Nginx的守護程序執行方式,在/conf/nginx.conf 中新增一行:
daemon off;
2. 新增VSCODE除錯配置
建立並修改launch.json
{ // 使用 IntelliSense 瞭解相關屬性。 // 懸停以檢視現有屬性的描述。 // 欲瞭解更多資訊,請訪問: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(lldb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/objs/nginx", "args": [], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "lldb" } ] }
3. 啟動除錯,爽歪歪!

三:除錯 Worker 程序
- 檢視 Worker 程序pid

2. 編輯 launch.json,新增 Attach配置
{ "name": "(lldb) Attach", "type": "cppdbg", "request": "attach", "program": "${workspaceFolder}/objs/nginx", "processId": "806{ // 使用 IntelliSense 瞭解相關屬性。 // 懸停以檢視現有屬性的描述。 // 欲瞭解更多資訊,請訪問: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(lldb) Attach", "type": "cppdbg", "request": "attach", "program": "${workspaceFolder}/objs/nginx", "processId": "80636", // 填寫 Worker 程序 PID "MIMode": "lldb" }, { "name": "(lldb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/objs/nginx", "args": [], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "lldb" } ] }
3. 切換 debug 模式為 attach

4. 開始 debug,在解析 Http 請求處打斷點,重新整理瀏覽器,再次爽歪歪!

是不是很方便,接下來,就盡情的跟隨原始碼旅行吧!