背景:在學習如何往ONNXRuntime中新增新運算元時,參考了官方測試程式碼:
onnxruntime/test/shared_lib/test_inference.cc
,程式碼內部使用GTest作為單元測試工具。為了清楚地學習執行過程,一步一步地除錯是不可缺少的。
開始除錯前需要以Debug方式編譯程式碼庫,同時別忘了開啟測試開關:
// cmake/CMakeLists.txt
...
option(onnxruntime_BUILD_UNIT_TESTS "Build ONNXRuntime unit tests" ON)
...
編譯完成之後,在 build/Linux/Debug
資料夾下有一個可執行程式:onnxruntime_shared_lib_test
,當然,資料夾下還有其它關於測試的可執行程式,比如onnxruntime_test_all、onnxruntime_perf_test、onnx_test_runner
等等。
接著需要在 .vscode/launch.json
檔案中新增除錯資訊:
{
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/Linux/Debug/onnxruntime_shared_lib_test",
"args": [
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/onnxruntime/test/",
"environment": [],
"externalConsole": false,
"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
}
]
}
]
}
配置內容幾乎都是自動生成的,我們只改動了其中兩項:
"program": "${workspaceFolder}/build/Linux/Debug/onnxruntime_shared_lib_test"
:配置除錯程式的路徑"cwd": "${workspaceFolder}/onnxruntime/test/"
:解決相對路徑問題
至此,我們就可以“愉快地”開始接下來的除錯任務了。