投稿日時: 2015/01/30
S Nakagawa
netBeansを使って,OpenFOAMデバッグ実行ができるようになりました。
手順メモを記します。きれいにまとめる時間がとれなかったので,読みにくい・間違っている場所があるかもしれません。
改訂・指摘など,大歓迎です。
## 前提条件 ##
NetBeans 8(C/C++)をインストール済み。
(gdbがインストールされていれば,NetBeansインストール時に自動的に設定されるはず。)
(確認は次のサイトを参照.https://netbeans.org/community/releases/80/cpp-setup-instructions.html)
新たにNetBeansをインストールするときは,ダウンロードしたファイルに実行権限を追加したあと,実行する。
chmod +x netbeans-8.0-cpp-linux.sh
試した環境は,Ubuntu14.04,OpenFOAM2.3.x,NetBeans8 (C/C++) である。
## 目的 ##
今回の目的は,次の2点である。
- ソースコードのリンクをたどりたい,
- 実行時selectionでの動きを追いたい
デバッグモードで実行できるようになれば良しとする。
カスタマイズして,新たなソルバーを作るときには,さらに設定を練り上げる必要がありそう。(自動補完などの動作を確認する。)
## wmakeを修正してnetBeans用を作成 ##
wmakeスクリプトを,NetBeans用に修正する。$WM_PROJECT_DIR/wmakeを,testNBにコピーする。
このファイルをNBwmakeという名前に変更する。
> mkdir $HOME/testNB
> cp $WM_PROJECT_DIR/wmake/wmake $HOME/testNB/
> mv $HOME/testNB/wmake $HOME/testNB/NBwmake
ファイル内の下記のセクションをコメントアウトする。
#------------------------------------------------------------------------------
# check arguments and change to the directory in which to run wmake
#------------------------------------------------------------------------------
そこに,下記を追記する.(http://openfoamwiki.net/index.php/Howto_Use_OpenFOAM_with_NetBeans の情報)
curDir=`pwd`
makeOption=""
dir="_"
MakeDir=Make
# for Debug
export WM_COMPILE_OPTION=Debug
これらの修正を施したファイルを添付する。
## wcleanを修正してnetBeans用を作成 ##
wclean スクリプトを,NetBeans用に修正する。$WM_PROJECT_DIR/wmakeを,testNBにコピーする。
> cp $WM_PROJECT_DIR/wmake/wclean $HOME/testNB/
> mv $HOME/testNB/wclean $HOME/testNB/NBwclean
## ソースコードの準備 ##
icoFoamを題材に練習する。ソースコードを,$HOME/testNBの下にコピーする。
> cp -r $FOAM_SOLVERS/incompressible/icoFoam $HOME/testNB
> mv $HOME/testNB/icoFoam $HOME/testNB/myIcoFoam
> cd $HOME/testNB/myIcoFoam
空のファイル(名前はMakefile)を作成する
> touch Makefile
Make/filesを修正する。 EXE = myIcoFoam とする。作業ディレクトリに実行ファイルができる.
> cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity $HOME/testNB/myIcoFoam
> cd $HOME/testNB/myIcoFoam/cavity
> blockMesh
## プロジェクトの作成と設定 ##
netBeansを起動する。OpenFOAMの設定bashrcが読み込まれた端末から,netBeansを起動する。
"File" - "New Project"
Categories C/C++ Projects Project with Existing Source
SeloctMode
Folder contains existing sources: $HOME/testNB/myIcoFoam を指定する。
Configuration Mode を Custom にする。
Build Tool
Clean and Build after Finish のチェックをはずす。
Exisiting Makefile を,先に作成した空のMakefile に指定する。
Build Actions
Working Directory を $HOME/testNB/myIcoFoam に指定する。
Build Command を ../NBwmake にする。
Clean Command を ../NBwclean にする。
Source Files
source files の追加で,下記の2つのディレクトリを指定する。
$HOME/OpenFOAM/OpenFOAM-2.2.2/src/OpenFOAM
$HOME/OpenFOAM/OpenFOAM-2.2.2/src/OSspecific/POSIX
さらに,source files の追加で,下記の2つのディレクトリを指定する。このディレクトリは,Make/optionsに記載されているライブラリに応じたものである。
$HOME/OpenFOAM/OpenFOAM-2.2.2/src/finiteVolume
$HOME/OpenFOAM/OpenFOAM-2.2.2/src/sampling
Project Properties の Debug において,Working dir をケースファイルのディレクトリに指定する。
## ビルド,デバッグ ##
画面左でプロジェクトをハイライトして右クリック,ビルドを実行する。
デバッグを実行することで,実行中のプログラム内の動きを知ることができる。メニューのデバッグから,デバッグの実行を選択する。
ステップオーバーで,ソルバーレベルでの実行時のコードの流れを追える。
さらに深くつながりを調べたいところでは,step into を選ぶ。内部で実行されている細かなコードを追える。元に戻りたいときは,step over を選ぶ。浅い階層に戻れる。
デバッグ時に時々止まってしまう。次に進めないことがある?
## 動画 ##
上記作業風景の動画を作成しました.
その1 プロジェクトの設定など
その2 デバッグ作業
## 参考 ##
http://mogura7.zenno.info/~et/wordpress/ocse/?p=1292
http://www.geocities.co.jp/SiliconValley-SantaClara/1183/study/OpenFOAM/netbeans.html
http://www.geocities.co.jp/SiliconValley-SantaClara/1183/study/OpenFOAM/kdbg.html
http://openfoamwiki.net/index.php/Howto_Use_OpenFOAM_with_NetBeans
http://openfoamwiki.net/index.php/HowTo_debugging
http://eddy.pu-toyama.ac.jp/OpenFOAM/