VS Code 远程调试 OpenFOAM

使用 VS Code 调试远程服务器上的 OpenFOAM 代码。

方法一

学习了评论区 Himryang 提供的思路,在此致谢!

第 1 步:在本地 VS code 中,安装 Remote - SSH 插件


第 2 步:在远程服务器任意目录,创建 .vscode 目录,手动在 .vscode 下创建如下几个文件,按照你的配置相应修改。PS:双斜杠后的内容是注释,只需要修改带注释的部分。

.vscode/c_cpp_properties.json

{
"configurations": [
{
"name": "Linux",
"includePath": [
"/home/whoami/OpenFOAM/OpenFOAM-7/src/**", // ${FOAM_SRC}/**
"/home/whoami/OpenFOAM/OpenFOAM-7/applications/**", // ${FOAM_APP}/**
"/home/whoami/OpenFOAM/whoami-7/**" // ${WM_PROJECT_USER_DIR}/**
],
"defines": [],
"compilerPath": "/usr/bin/g++",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 1
}

.vscode/tasks.json

{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"linux": {
"options": {
"shell": {
"args": ["-ci"]
}
}
},
"label": "wmakeDebug-build", // 这个是 Debug 模式的 build
"options": {
"cwd": "/home/whoami/OpenFOAM/whoami-7/src/combustionModels" // 正在开发的代码目录
},
"command": "of7Dbg; wclean; wmake -j; echo finished!",
"problemMatcher": [
"$gcc"
],
"group": "build"
},
{
"type": "shell",
"linux": {
"options": {
"shell": {
"args": ["-ci"]
}
}
},
"label": "wmake-build", // 这个是 Opt 模式的 build,可用于日常开发程序
"options": {
"cwd": "/home/whoami/OpenFOAM/whoami-7/src/combustionModels" // 正在开发的代码目录
},
"command": "of7; wclean; wmake -j; echo finished!",
"problemMatcher": [
"$gcc"
],
"group": "build"
}
]
}

.vscode/launch.json

{
"version": "0.2.0",
"configurations": [
{
"name": "OF-Debug",
"type": "cppdbg",
"request": "launch",
"program": "/home/whoami/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Debug/bin/icoFoam", // debug 模式的求解器位置
"args": [],
"stopAtEntry": true,
"cwd": "/home/whoami/OpenFOAM/whoami-7/run/cavity", // 算例目录
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "wmakeDebug-build", // 每次 debug 前编译一下代码,不需要的话可以注释此行
"miDebuggerPath": "/home/whoami/codeTest/of7Gdb.sh", // of7Gdb.sh 的绝对路径,不要用 ~ 表示 HOME 目录
}
]
}

随便找个目录创建文件 of7Gdb.sh(然后把它的路径填到 launch.json 的 miDebuggerPath 里边),并赋予它可执行权限 chmod +x of7Gdb.sh

#!/bin/bash
source ~/OpenFOAM/OpenFOAM-7/etc/bashrc WM_COMPILER=Gcc WM_MPLIB=SYSTEMOPENMPI WM_COMPILE_OPTION=Debug
/usr/bin/gdb "$@"

.vscode/settings.json

{
"C_Cpp.intelliSenseEngine": "Tag Parser",
"files.associations": {
"*.C": "cpp",
"*.H": "cpp"
},
}

第 3 步:使用 Remote - SSH 插件登录到目标服务器,在弹出的选项 select the platform of the remote host 中,选择 Linux。


第 4 步:在登录到远程服务器的那个 VS Code 窗口,打开 .vscode 所在的文件夹。
按 F5 开始以 debug 模式运行,打上一些断点后,就可以开始运行了。
期间按照提示在远程服务器自动安装 C/C++ 插件


参考资料:


方法二

第 1 步:在本地 VS code 中,安装 Remote - SSH 插件


第 2 步:在远程服务器任意目录,创建 .vscode 目录,手动在 .vscode 下创建如下三个文件,按照你的配置相应修改。PS:双斜杠后的内容是注释,只需要修改带注释的部分。

.vscode/c_cpp_properties.json

{
"configurations": [
{
"name": "Linux",
"includePath": [
"/home/whoami/OpenFOAM/OpenFOAM-7/src/**", // ${FOAM_SRC}/**
"/home/whoami/OpenFOAM/OpenFOAM-7/applications/**", // ${FOAM_APP}/**
"/home/whoami/OpenFOAM/whoami-7/**" // ${WM_PROJECT_USER_DIR}/**
],
"defines": [],
"compilerPath": "/usr/bin/g++",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 1
}

.vscode/launch.json

{
"version": "0.2.0",
"configurations": [
{
"name": "OF-Debug",
"type": "cppdbg",
"request": "launch",
"program": "/home/whoami/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Debug/bin/icoFoam", // debug 模式的求解器位置
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"miDebuggerPath": "/usr/bin/gdb",
"miDebuggerServerAddress": "130.235.81.255:1234", // 远程服务器 HostName:gdbserver 端口
}
]
}

.vscode/settings.json

{
"C_Cpp.intelliSenseEngine": "Tag Parser",
"files.associations": {
"*.C": "cpp",
"*.H": "cpp"
},
}

第 3 步:使用 Remote - SSH 插件登录到目标服务器,在弹出的选项 select the platform of the remote host 中,选择 Linux。


第 4 步:在远程服务器,进入 OpenFOAM debug 模式的环境,在算例目录下使用 gdbserver 运行求解器,比如 icoFoam,使用 1234 端口。
这一步也可以在 VS Code 中操作,在登录到远程服务器的那个窗口,打开新的终端,激活 OpenFOAM debug 模式,然后在算例目录下执行 gdbserver。

gdbserver :1234 icoFoam

如果远程服务器没有 gdbserver,请自行安装。


第 5 步:在登录到远程服务器的那个 VS Code 窗口,打开 .vscode 所在的文件夹。
按 F5 绑定远程正在运行的 gdb 服务,打上一些断点后,就可以开始运行了。
期间按照提示在远程服务器自动安装 C/C++ 插件


参考资料:

文章作者: Yan Zhang
文章链接: https://openfoam.top/vscodeDebug/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 OpenFOAM 成长之路
您的肯定会给我更大动力~