Linuxプログラムデバッグ(GDB,PDB,Vscode)


1、Linux C++デバッグ(GDBデバッグ)
基本条件:Makefileファイルが書かれ、端末でコンパイルされます.(できない場合は、私のブログのインスタンスを参照してください)
参考サイト:https://jingyan.baidu.com/article/acf728fd464984f8e410a369.html
Makefileコンパイル実行後、最終的にmainファイルを生成し、デバッグ手順は以下の通りです.
1)コマンドライン入力$gdb;
2)コマンドライン$file main#デバッグで生成されたmainファイルを入力します.
3)コマンドラインに$l#を入力してcppファイルコードを表示する;
4)コマンドライン入力$b 13#コードの13行目にブレークポイントを設定する;
コマンドライン$b関数名を入力し、特定の関数にブレークポイントを設定します.b mainは、主関数の開始時にブレークポイントを設定する.
5)コマンドラインは$r#を入力して実行コードを開始し、ブレークポイントで停止する.
6)コマンドラインに$n#の単一ステップデバッグを入力し、現在のコードから、一歩一歩実行する.
7)コマンドラインに$print変数を入力し、自分が見たい変数値を印刷する.
8)コマンドライン入力$s#入力関数
9)コマンドラインに$set args param 1 param 2...を入力すると、パラメータを加えてデバッグできます.(参考:http://visualgdb.com/gdbreference/commands/set_args)
Cuda-gdbデバッグcaffeリファレンスWebサイト:https://blog.csdn.net/u010158659/article/details/78418701
10)コマンドライン入力$ptype変数(var)#出力変数タイプ
11)コマンドラインに$x/12 xb&var#を入力してメモリを表示します.&varが先頭アドレス、12がデータブロックバイト数
12)コマンドライン入力$b filename:N#指定ファイルfilename N行設定ブレークポイント
 
2、Linux pythonデバッグ(pdbデバッグ)
参考サイト:https://blog.csdn.net/linda1000/article/details/11031771
私は直接よく使う方法を選びました!
1)デバッグが必要なpythonコードで、ブレークポイントを選択し、ブレークポイントに対応する位置に書き込みます(ブレークポイントを設定します):
import pdb
pdb.set_trace()

2)コマンドpython*を使用する.pyプログラムを実行する;
3)プログラムは設定されたブレークポイントに止まり、複数のコマンドで変数を表示したり、問題を探したりすることができます.
コマンドは次のとおりです.
(Pdb)p param #   
(Pdb)l # 
(Pdb)a # 

デバッグ入力qを停止すればよい.
サブコマンド:terminalでのコンテンツ検索:Ctrl+Shift+F
 
3、Vscodeデバッグcaffe
ここでは比較的簡単な方法でcaffeをデバッグします.原理はGDBデバッグの原理です.Vscodeで多くの機能を統合しただけです.
1)コンパイル
step1_1:Makefile.の修正configファイル:DEBUGのコメントをキャンセルする;
step1_2:コンパイル.私は直接caffeディレクトリの下で、コマンドラインコンパイルを採用しています.すなわち、make clean&&make all-j 32&&make pycaffe#make cleanは、以前にコンパイルされたファイルを消去し、make all-j 32はコンパイルを加速させるためにコンパイルされ、make pycaffeはcaffeのpythonインタフェースをコンパイルします.
2)デバッグ
step2_1:Vscodeでcaffeルートディレクトリを開く;
step2_2:GDBのlaunchを書く.jsonファイル:(デバッグ->構成の追加->GDBの選択(ここにない場合はC/C++の拡張を先に構成する必要があります)->プログラムとargsの項目の変更)
"program": "${workspaceFolder}/build/tools/caffe.bin",
"args": ["train","--solver=examples/mnist/solver.prototxt"],

step2_3:プログラムにブレークポイントを挿入し、デバッグを開始します.
ps:vscodeデバッグはprotobuf環境などに問題がないことを保証する必要があります.また、cppファイルにブレークポイントを挿入するしかありません.そのため、現在はcpu-onlyモードしかデバッグできません.
デバッグモードのVscodeショートカット:F 5-次のブレークポイントまで実行します.F 11-シングルステップでデバッグします.デバッグウィンドウで現在のLocal変数を表示できます.