OpenFOAM【VSCodeでdbg】
WSL+VSCode環境でOpenFOAMデバッグの環境構築です。
デバッグオプションでコンパイル
環境変数 $WM_COMPILE_OPTIONをDebugに変更します。その前に一応、現在の状態を確認。
$ echo $WM_COMPILE_OPTION Opt
$WM_PROJECT_DIR/etc/bashrc内を修正します。readonlyオプション付きなのでsudoで無理やり修正。
$ sudo vim $WM_PROJECT_DIR/etc/bashrc
#- Optimised, debug, profiling: # WM_COMPILE_OPTION = Opt | Debug | Prof #export WM_COMPILE_OPTION=Opt export WM_COMPILE_OPTION=Debug
設定の反映、確認をします。
$ source $WM_PROJECT_DIR/etc/bashrc $ echo $WM_COMPILE_OPTION Debug
続いて、$WM_PROJECT_DIR/Allwmakeを実行します。が、普通に./Allwmakeを実行しようとすると、permissionが無いと言われて怒られました。sudo -Eのオプションも利かなかったので、ちょっと回りくどかったですが、rootで入り直して実行しました。
$ su - # cd $WM_PROJECT_DIR/etc/bashrc # source bashrc # ./$WM_PROJECT_DIR/Allwmake
bashrcをもう一度設定変更することを忘れない。なお、上のコマンドは環境変数が反映されないと利きません(ディレクトリの場所を直打ちしましょう)。
途中でエラーが出ました。
qhelpgenerator: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qhelpgenerator': No such file or directory
qt4のプログラムが無いようでした。qt5はあった(/usr/lib/x86_64-linux-gnu/qt5/bin/にqhelpgeneratorがあった)ので、これをコピーして/qt4/binにつっ込んだらうまくいきました(これでいいのか、という気はするけど、、、)
vscodeでのgdb設定(launch.jsonの修正)
launch.jsonを下記のように修正しました。
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) openfoam", "type": "cppdbg", "request": "launch", "program": "実行ファイルの配置場所/myFoam", "args": [], "stopAtEntry": true, "cwd": "実行ファイルの配置場所", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "setupCommands": [ { "description": "gdb の再フォーマットを有効にする", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
このへんも参考に。
FrontISTR【VSCodeデバッガ】 - FEMとFortranが好きな人の技術のメモ
コンパイルとデバッグ
プログラムを修正したら、wmakeでコンパイルします。環境変数が更新されているはずなので、デバッグモードでコンパイルできます。あとはvscodeでデバッグをするとよいのです。デバッグモードで実行するときは、結構時間かかります。
これでok。
追記
以下エラーが出ました(デバッグモードだから?)。タイポのようなので、指示通り修正
expressions/exprResult/exprResultGlobals.C:206:58: error: ‘const class Foam::HashTable<Foam::expressions::exprResultGlobals::Table>’ has no member named ‘sortToc’; did you mean ‘sortedToc’? << "Known global scopes: " << variables_.sortToc() << nl; ^~~~~~~ sortedToc
[OpenFOAM.org] Compiling of Openfoam fails with Debug switch -- CFD Online Discussion Forums
参考にしました。
OpenFOAMをデバッグモードでコンパイルする(Ubuntu 14.04 LTS) - Qiita