之前一直使用的是linux终端的gdb,因为调试的对象是riscv,而我们使用的环境是x86的,所以必须用emulator。目前的工作是对assembler进行移植,并利用自己的编写的c++文件为完成测试,并不需要用到riscv环境,直接使用x86的环境进行gdb调试,这个时候可以使用vscode进行gdb。
- 单独打开一个vscode工程文件
- 修改launch.json文件
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "/home/user/codes/zhimo-aosp-d_art/out/host/linux-x86/nativetest64/art_compiler_host_tests/assembler_riscv64_test",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
// "preLaunchTask": "C/C++: g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
program为生成的可知性文件的路径。
-
在需要打断点的程序前按个红点,表示需要在这里打断点
image.png - 点击Run->start debugging
-
第一个按钮表示继续运行到下一个断点,没有下一个断点的话就直接运行结束
第二个按钮表示gdb的n,为下一步
第三个按钮为gdb的s,进入函数内部
第四个按钮跳出当前步骤
第五个按钮表示重新开始调试
最后一个按钮暂定
gdb
6.可以在左侧查看断点打了多少个,并且可以使用watch对类,变量等进行监测
watch -
在调试的时候可以将鼠标放在变量上查看变量的值
显示变量值
注意:容器的值暂时还看不了,如果是函数模板,也查看不了。
有了vscode的调试工具,在调试的时候相比于终端的gdb,效率不止高了一点点。注意,调试不能返回上一步。