デバッグ
私が使った事あるのは
gdbとかvisual studioである。
ブレークして変数にある値を入れてリスタートして動作して次のブレーク中の変数を表示したりして
動作確認する。
gdbコマンドの時に実行(バイナリー)ファイルとコアファイルが指定できる。
コアファイルではbt(backtrace)のあとf [#数字のみ](frame [#数字のみ])とかつかって場所確認でl(list)したりする。
gdbでは標準入力状態でスタートする前にb(break)の何ファイルの何行目かを指定してr(run)をスタートしブレイク後s(step)とかn(next)とかc(continue)入力する。
info bとかinfo threadとかでブレイクポイントやスレッドの情報が得れる。
値の表示にはp(print)とかprintfでコードの表示にはl(list)だった。
値の変更はsetのようである。
前のコマンドと同じ場合リターンのみでOKである。
終了はq(quit)である。
デバックモードのバイナリーじゃなくても正式のバイナリーでもgdbで見れるとか言われた。
なんだかバイナリー自体にコードを含んでるのかなあと思ったりした。
テスト技術やバグの発見には必要なものである。
あんまり他人から詳しく教えてもらえなかったので
不得手だけど
何度か扱った。
データベースやら端末やらついてくると
評価が難しくなる気がする。
デバック技術とコンパイルエラーに対するこの反射神経は
人間とコンピューターとの対話のような気がする。
//2014/02/18 新規作成
//2014/03/25 追加編集
//2014/06/08(20:30) 追加編集
//gdbの例//20191103//20191110//20191111編集
cd /home/usr/bin
gdb application
set args 引数1 引数2
b filecode:何行目の数字
b filecode:関数名
b main
b 関数名
info b
r
s
n
l
p 変数
set 変数 値
c
q
y
gdb application corefile
bt
f 数字
info f
q
y
//20191125
/*Visual Studio
F11ステップイン
F10ステップオーバー
Shift+F11ステップアウト
*/