VSCode 單步混合調試OWT Server的NodeJS和C++代碼

之前在Docker已經配置成功單步混合調試,但是再次配置本機的OWT Server 單步調試環(huán)境,折騰了一些時間,寫此文記錄要點。

1,使用VSCode 打開 OWT Server 目錄源碼

2,安裝必要的插件

C/C++

Nodejs Snippets

JavaScript (ES6) code snippets

3,? 創(chuàng)建?.vscode/launch.json?文件,內容如下:

"version": "0.2.0",

? ? "configurations": [

? ? ? ? {

? ? ? ? ? ? "name": "(gdb) Attach",

? ? ? ? ? ? "type": "cppdbg",

? ? ? ? ? ? "request": "attach",

? ? ? ? ? ? "program": "/home/oem/.nvm/versions/node/v14.19.1/bin/node",

? ? ? ? ? ? "processId": "${command:pickProcess}",

? ? ? ? ? ? "MIMode": "gdb",

? ? ? ? ? ? "setupCommands": [

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? "description": "Enable pretty-printing for gdb",

? ? ? ? ? ? ? ? ? ? "text": "-enable-pretty-printing",

? ? ? ? ? ? ? ? ? ? "ignoreFailures": true

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? "description":? "Set Disassembly Flavor to Intel",

? ? ? ? ? ? ? ? ? ? "text": "-gdb-set disassembly-flavor intel",

? ? ? ? ? ? ? ? ? ? "ignoreFailures": true

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ]

? ? ? ? },

? ? ? ? {

? ? ? ? ? ? "name": "LaunchVideo",

? ? ? ? ? ? "localRoot": "${workspaceFolder}/dist-debug/video_agent/",

? ? ? ? ? ? "cwd":"${workspaceFolder}/dist-debug/video_agent/",

? ? ? ? ? ? "program": "index.js",

? ? ? ? ? ? "args": ["-U",? "video"],

? ? ? ? ? ? "env":{ "LD_LIBRARY_PATH" : "./lib" },

? ? ? ? ? ? "request": "launch",

? ? ? ? ? ? "skipFiles": [

? ? ? ? ? ? ? ? "<node_internals>/**"

? ? ? ? ? ? ],

? ? ? ? ? ? "type": "node",

? ? ? ? ? ? "runtimeArgs": ["--preserve-symlinks"]

? ? ? ? }

? ? ]

}

4,操作說明:

這里我們調試的是 video_agent進程。調試webrtc_agent、audio_agent等nodejs? NAN 調用C++ 代碼的進程,操作是一樣的。

第一步,執(zhí)行LaunchVideo, 啟動NodeJS 進程,此時nodejs已經可以斷點調試

需要先停掉用腳本批量啟動的進程:./bin/daemon.sh stop video-agent

第二步,此時會啟動兩個進程, index.js是管理進程, workingNode是具體的工作進程,C++代碼在這個進程,進程id 32505。

第三步,執(zhí)行(gdb) Attach,進程ID 寫上面的id? 32505.??

此時,在源碼目錄 source/agent/video 內的CPP源文件,就可以加上斷點了。

例如斷點加在mcu::VideoMixer::VideoMixer, 打開chrome進入房間https://192.168.3.106:3004/,命中斷點,如下圖。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容