使用 VS Code 调试远程服务器上的 OpenFOAM 代码。
方法一
学习了评论区 Himryang 提供的思路,在此致谢!
第 1 步:在本地 VS code 中,安装 Remote - SSH 插件
第 2 步:在远程服务器任意目录,创建 .vscode
目录,手动在 .vscode
下创建如下几个文件,按照你的配置相应修改。PS:双斜杠后的内容是注释,只需要修改带注释的部分。注意,不要用 ~ 表示 HOME 目录
.vscode/c_cpp_properties.json
{ "configurations": [ { "name": "Linux", "includePath": [ "/home/whoami/OpenFOAM/OpenFOAM-7/src/**", "/home/whoami/OpenFOAM/OpenFOAM-7/applications/**", "/home/whoami/OpenFOAM/whoami-7/**" ], "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", "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", "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/reconstructPar", "args": ["-time", "10"], "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", "miDebuggerPath": "/home/whoami/codeTest/of7Gdb.sh", } ] }
|
随便找个目录创建文件 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/**", "/home/whoami/OpenFOAM/OpenFOAM-7/applications/**", "/home/whoami/OpenFOAM/whoami-7/**" ], "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/reconstructPar", "args": ["-time", "10"], "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", } ] }
|
.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,请自行安装。
第 5 步:在登录到远程服务器的那个 VS Code 窗口,打开 .vscode
所在的文件夹。
按 F5 绑定远程正在运行的 gdb 服务,打上一些断点后,就可以开始运行了。
期间按照提示在远程服务器自动安装 C/C++ 插件。
参考资料: