[MFiXソースコードを読む] Fanwai:gdbを使用してmfixプログラムをデバッグする方法 Visual Studioコードを使用してデバッグを視覚化する

@ [TOC]
##前提は
、gdbがインストールされたlinux / windows を準備することです

そうでない場合は、ubantuの下のapt-getでダウンロードしてください。通常、
windows に付属してmingw64をインストールします(64ビットと32ビットを間違えないように注意してください)。

---- mfix-19.3.1
を使用してUbantu 16.04仮想マシン
を使用しています

##メソッド
### 1.ソルバーをコンパイルします

ターミナル、タイプでは
、 `` `bashの
4 -j build_mfixsolver --batch "FCFLAGS = -g -O0"
` ``
完全mfixsolver後という名前の実行可能ファイルが存在します

パラメーターの説明:--
batchは、コマンドラインからのみmfix(非GU​​I)を実行できることを意味します。この方法でのみ、実行可能ファイル
FCFLAGSはコンパイラーに渡されるパラメーターを表すことができます(デフォルトはgfortranで指定されていません)
-gは出力デバッグを意味します情報、この情報はgdbによって受信されます
-O0はコンパイルの最適化がないことを意味します。このパラメーターが追加された場合にのみ、ステートメントは1つずつ順番に実行されます。それ以外の場合は、プログラムのステートメントがスキップされ、しばらくするとそこに到達します。

### 2.ロードコンパイル済みプログラムのGDBは
、 `` `bashの
GDB mfixsolver
` ``
端末は内部のGDBを入力します

### 3. GDBの実行を、ソースコード表示
入力
`bashの
リストまたはL
`
表示ソースコードのいくつかの行を

入力します
`` `のbash
gas_and_solid_Yin.mfx -f RUN
` ``
gas_and_solid_Yin.mfxは、独自の.mfxの名前に置き換えプログラムを実行します

ここでコントロールCはプログラムを終了できません。プログラム
を終了するには、== control + z ==を使用してください

gbdの一般的な使用法については、
[https://www.cnblogs.com/HKUI/p/8955443.html](https://www.cnblogs.com/HKUI/p/8955443.html)を参照してください


##一般的なエラーの概要
1. --batchを使用して純粋なコマンドラインモードにコンパイルすると表示されます

`シェル
ない実行可能な形式で:ファイル形式が認識されない
` ``
GUIコンパイラが実際にシェル・ドキュメントによって生成されるので、これは、そのステートメント:ポインティングPythonの
GUIの可視mfixは、Pythonシェルのセットであります手順

2. gdb -f gas_and_solid_Yin.mfxで実行するときにパラメーターが指定されていない場合
``
***************************** *****************************************
From:mfix.f
エラー1000:入力データファイルが存在しません:mfix.dat中止しています

*************************************** *******************************
`` `
非常にシンプルで、デッキファイルの名前を指定しなくても、名前は自動的にmfixとして決定されます。 dat、この名前は古いバージョンでのみ使用できます

##上級:VSコードを使用して
gdbデバッグを視覚化すると、基本的にほとんどのニーズを満たすこと
ができますが、中断点を視覚化できません。vs
コードを使用してVisual Studioのようにデバッグするのは不便です
==注:まだmfixsolverをコンパイルする必要があります==

### 1準備:
ビジュアルスタジオコードダウンロードするプラグインをインストールする

左側の拡張タブでプラグインを検索します

== morden fortranという名前のプラグインをインストール====
C / C ++
という名前のプラグインをインストール==== fortranブレークポイントという名前のプラグインをインストール==

VS CODEのローカリゼーションである中国語プラグインをインストールすることもできます
![ここに画像の説明を挿入](https://img-blog.csdnimg.cn/20200421151000815.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk、 shadow_10、text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk0MDMxNA ==、size_16、color_FFFFFF、t_70)


### 2
左側のサイドバーのデバッグボタンクリックするようにlaunch.jsonを設定してから、小さな歯車をクリックし、最後に
図のようにC ++(GDB / LLDB)クリックします
。 cn / aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy84NDY1NzMxLTBiNzdmNjIwNjE4Y2JhZmMucG5n?/ -oss-process = image

==その後、launch.jsonファイルが.vscodeフォルダーに表示されます(構成が間違っている場合はいつでもこのファイルを削除してから、再
実行できます)== ファイル内容は
`` `javascript
{
// IntelliSenseを使用して関連する属性を理解します。
//マウスオーバーすると、既存のプロパティの説明が表示されます。
//詳細については、https
://go.microsoft.com/fwlink/?linkid = 830387 "version": "0.2.0"、
"configurations":[
{
"name": "(gdb )Start "、
" type ":" cppdbg "、
" request ":" launch "、
" program ":"プログラム名を入力します(例:$ {workspaceFolder} /a.out "、
" args ":[]、
" stopAtEntry " :false、
「cwd」:「$ {workspaceFolder}」、
「environment」:[]、
「externalConsole」:false、
「MIMode」:




"ignoreFailures":trueに
}
]
}
]
}
`` ` "プログラム":"たとえば、プログラムの名前を入力し、$ {} workspaceFolder /a.out"、2行目の引用符の位置は、(あなたのmfixsolverの位置を交換しますフルパス)たとえば、私のものは/ home / cl / MFiX_Cases / git_sync / Yin_0413_git_sync_case / mfixsolver




stopAtEntryはtrueに変更できます。
これは、プログラムに入った後に一時停止することを意味します。これは変更されたlaunch.json です。

`` javascript
{
// IntelliSenseを使用して、関連するプロパティを理解します。
//マウスオーバーすると、既存のプロパティの説明が表示されます。
//詳細については、https
://go.microsoft.com/fwlink/?linkid = 830387 "version": "0.2.0"、
"configurations":[
{
"name": "(gdb )Start "、
" type ":" cppdbg "、
" request ":" launch "、
" program ":" $ {workspaceFolder} / mfixsolver "、
" args ":[]、
" stopAtEntry ":true、
" cwd ": "$ {workspaceFolder}"、
"environment":[]、
"externalConsole":false、
"MIMode": "gdb"、
"setupCommands":[
{
"






}
`` `


### 3実行およびデバッグ
F5キーを押して実行し、デバッグ
する小さなツールボックスが右上隅に表示されます
![ここに画像の説明を挿入](https://img-blog.csdnimg.cn/20200421003230396.png)
ステップバイステップ(F10)はサブルーチン/関数を入力しないことを意味し、
F11はすべてのサブルーチンを入力することを意味
し、文ごとに実行する現在のサブルーチンからジャンプすることを意味します


要点を打破する方法
![ここに画像の説明を挿入](https://img-blog.csdnimg.cn/20200421150520249.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nkmMzzG4z color_FFFFFF、t_70)
行番号の左側の空白をクリックすると、小さな赤い点が表示されます。ブレークポイント
F5は次のブレークポイントまで実行されますか

###エラーの概要
####質問1つのエラーが
解決すべき問題がある、ちょうど-f .mfxファイルエラーを指定することはできません
`` `
****************** ************************************************** **
差出人:mfix.f
エラー1000:入力データファイルが存在しません:mfix.dat中止しています

**************************** ******************************************
`` `
これまでも見つかりませんでした解決策ですが、.mfxファイルの名前をmfix.datに変更します。
結局のところ、これは名前であり、問​​題ではありません。

####問題2
再起動時にrun_type = newをすばやく削除します。生成された結果がないはずです。実行するたびにフォルダーを空にする必要があります

起動するたびに大量のものを手動で削除するのは非常に面倒です。ターミナルコード
`` `
rm -r * .RES * .SP * * .pvd * .csv VTK BACKUP_RES * .LOG * .OUT * .TXT * .vtu * .vtp
`` `

または〜〜.bashrcで定義し
、コードを最後の行コピーしてからターミナルを再起動し、
「 `
alias mfixclean =" rm -r * .RES * .SP * * .pvd * .csv VTK BACKUP_RES * .LOG * .OUT * .TXT * .vtu * .vtp "
` "
削除するたびにmfixcleanを実行するだけで済みます

####問題3
ブレークポイント/次のステップを実行できない主な理由は、fortranブレークポイントプラグインがインストールされていないことです

####質問4
デバッグを視覚化するだけで、mfixsolver vsコードが見つかりませんだから私はまだ自分でコンパイルする必要があります。

mfixsolverをコンパイルする必要があります
`` `bash
build_mfixsolver --batch" FCFLAGS = -g -O0 "-j 4``
`

おすすめ

転載: www.cnblogs.com/chunleili/p/gdb_debug_MFiX.html