netBeans使った OpenFOAM の デバッグ

投稿日時: 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/

.