背景:在学习如何往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
}
]
}
]
}

配置内容几乎都是自动生成的,我们只改动了其中两项:

  1. "program": "${workspaceFolder}/build/Linux/Debug/onnxruntime_shared_lib_test":配置调试程序的路径
  2. "cwd": "${workspaceFolder}/onnxruntime/test/":解决相对路径问题

至此,我们就可以“愉快地”开始接下来的调试任务了。

最新文章

  1. BackTrack5-r3系统软件更新
  2. 招聘一个靠谱的 iOS
  3. 【HDOJ】1068 Girls and Boys
  4. 利用if,else判断输入的是不是一个正整数
  5. 在linux中使用php将word文档转为pdf
  6. Python的编码规范(PEP 8 & Google Python guide)
  7. (转载)浅析error LNK2001: unresolved external symbol "public: __thisc...
  8. Zabbix的数据表结构
  9. lufylegend库 LGraphics
  10. java解析xml汇总(转自倾城幻影-Java解析xml汇总,链接:http://www.cnblogs.com/jiugehuanying/archive/2012/01/12/2320058.html)
  11. postman 第6节录制case
  12. 在Winform开发框架中对附件文件进行集中归档处理
  13. golang 打包,交叉编译,压缩
  14. vue条件语句v-if、v-else、v-else-if用法
  15. Android开发之漫漫长途 XVII——动画
  16. tcp连接需要注意的问题
  17. maven 配置jdk版本编译
  18. go test
  19. Spark Shuffle(二)Executor、Driver之间Shuffle结果消息传递、追踪(转载)
  20. java学习笔记—HTTP协议(10)

热门文章

  1. Vue 源码解读(1)—— 前言
  2. MASA Framework - DDD设计(2)
  3. SpringBoot整合Redis案例缓存首页数据、缓解数据库压力
  4. Go1.14版本vendor和gomodule冲突问题
  5. uniapp vue3 $on/$once/$off 的替代方案
  6. 如何在win10系统上安装linux子系统
  7. 【windows 访问控制】三、访问控制列表 ACL=DACL+SACL
  8. 【C# .Net GC】后台垃圾回收
  9. C# typeof() 和object.GetType() 、Type..GetType()使用和区别
  10. Debian 11 配置优化指南