forked from openjdk/jdk11u
-
Notifications
You must be signed in to change notification settings - Fork 14
Debug openjdk riscv in vscode local mode
zifeihan edited this page Sep 26, 2021
·
2 revisions
此文档作为 使用GDB在QEMU用户模式中进行远程调试 的扩展,使用 vscode 本地模式对 openjdk-riscv 进行调试。
-
该文档作为 使用GDB在QEMU用户模式中进行远程调试 的图形化调试扩展,在进行以下步骤之前,应能在本地先完成 使用GDB在QEMU用户模式中进行远程调试
-
在本地安装 vscode
-
在 vscode 中导入被调试的 openjdk-riscv 源码目录
-
在 vscode 中添加 debug 配置项,并编辑配置文件(launch.json)内容,如下:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
// GDB调试地址,端口号需要和 在QEMU启动程序时,通过 -g 指定的端口号保持一致
"miDebuggerServerAddress": "localhost:33334",
// 程序启动入口,注意按照编译时指定的路径修改
"program": "/usr/local/plct/jdk11u/build/linux-riscv32-normal-core-slowdebug/jdk/bin/java",
// GDB 调试参数
"args": ["-version"],
"stopAtEntry": false,
"cwd": ".",
"environment": [],
"externalConsole": false,
// 添加动态库路径,注意按照编译时指定的路径修改
"additionalSOLibSearchPath": "/usr/local/plct/jdk11u/build/linux-riscv32-normal-core-slowdebug/jdk/lib:/usr/local/plct/jdk11u/build/linux-riscv32-normal-core-slowdebug/jdk/lib/jli:/usr/local/plct/jdk11u/build/linux-riscv32-normal-core-slowdebug/jdk/lib/server",
"MIMode": "gdb",
// 设置使用该版本GDB进行调试
"miDebuggerPath": "/usr/local/plct/riscv32/bin/riscv32-unknown-linux-gnu-gdb",
// "miDebuggerPath": "/usr/bin/gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
- 按照 使用GDB在QEMU用户模式中进行远程调试 中使用QEMU启动程序的方法:进入到构建好的JDK镜像的
bin
目录下,然后在后台使用QEMU执行java -version
,如:
$ cd /path/to/jvm/openjdk-11.0.9-internal/bin
$ /path/to/qemu/bin/qemu-riscv32 -L /path/to/riscv32/sysroot -g 33334 ./java -version
注意:/path/to/xxx 需要按照编译时指定的路径修改
-
在QEMU上启动openjdk后,即可使用
vscode
的调试功能调试方法:在相应文件上打断点,F5或者点击左侧debug图标,根据需要进行单步调试或者切换线程调试。
切换线程:切换进程如果不能鼠标左键点击左边进程栏的进程进行切换时,可以在命令行下输入命令
-exec t 2
进行切换。
-
使用GDB进行调试参考: 使用GDB在QEMU用户模式中进行远程调试
-
使用vscode remote-ssh参考:使用vscode remote-ssh对OpenJDK-RISCV进行调试