使用lldb调试tvm中C++代码
准备阶段
- 编译安装llvm和tvm,其中,llvm需要lldb,tvm使用Debug模式编译,参考这里。
- vscode扩展
- C/C++
- Python
- CodeLLDB
- FFI Navigator
可能需要安装对应python包
pip install ffi-navigator
配置阶段
配置launch.json和tasks.json文件。
launch.json:
{ "version": "0.2.0", "configurations": [ { "name": "PyTest", "type": "python", "stopOnEntry": false, "request": "launch", "module": "pytest", "args": [ "-sv" ], "cwd": "${workspaceFolder}/tests/myTest",//指向自己的py测试文件夹 "preLaunchTask": "myShellCommand", "env": {}, "envFile": "${workspaceFolder}/.env" }, { "type": "lldb", "request": "attach", "name": "LLDB-Attach-TVM", "pid": "${command:pickMyProcess}" }, ] }
tasks.json:
{ "version": "2.0.0", "tasks":[ { "label":"myShellCommand", "type":"shell", "command": "echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope " } ] }
调试
在python和对应C++文件中打好断点后,在python文件中使用Pytest调试。
调试开始后在Debug Console里输入命令获取pid
import os os.getpid()
将获取的pid复制,选择Attach-TVM,点击绿色启动按钮,出现输入框,将pid复制进输入框。点击中间调试按钮进入C++文件。