draemonash2のメモ書き
gcc -g ./a.outgdb ./a.outgdb ./a.out -x scriptnamegdb --args a.out AAAAattach pid【プロセスデタッチ】detach
rqstart #main関数の入口に1回だけのブレークポイントを張ってプログラムを開始する【引数指定実行】run --foo --bar
nnissicfinu【処理実行(特定アドレス到達まで)(until)】u \*main+43
【ステップアウト】ret -1 #現在の関数を戻り値-1として強制的に抜ける
b funcnameb \*0x08048695tb funcnameb bubblesort.c:30b filename if n == 1watch i==10 #変数は静的変数のみ指定できる(=ウォッチポイントともいう)rwatch \*0xbffff76cawatch \*0xbffff76ci bd <bnum> #ブレークポイント番号(info breakpointsにて取得)を指定するclear <bnum>disable <bnum>enable <bnum>command <bnum>
catch syscall writeignore <bnum> 9 #ブレークポイント番号1を9回無視する【ブレークポイント停止条件追加】condition <bnum> if n == 1
l【コード表示(関数指定)(list)】l funcname
displaydisplay varnameinfo displaydisable display 1 #info displayで取得した番号を指定するenable display 1 #info displayで取得した番号を指定する【停止時表示削除】undisplay 1 #info displayで取得した番号を指定する
dir ...
【ソースディレクトリ一覧出力】show directories
i r
p var1p arrayp (char[8]) namep &namep/x name #16進表示
whatis arrayptype array【変数値設定】set array[3] = 199
i proc map【スタックフレーム表示】frame 0 #フレーム番号
bt #現在関数呼出しまでの経路表示bt fullupdown【バックトレース】where #backtraceのエイリアス
info macro マクロ名 i low var1shell ls【シェルコマンド実行2】!ls
disassemble /msource scriptname【gdbinit再読み込み】source /home/tsuyoshi/.gdbinit
info threadsthread 1 #info threadsで取得できるスレッド番号を指定するset logging file <ログファイル名>set logging on【ロギング終了】set logging off
show endian【エンディアン設定】set endian (big|little)
【コアダンプ解析】gdb ./exefile <coreファイル>
alias -a w = dashboard expression watchdefine 関数名 ~ 処理 ~ endlayout asmlayout srclayout regstui disableinfo winlayout nextlayout prevlayout srclayout asmlayout splitlayout regsfocus nextfocus prevfocus srcfocus asmfocus regsfocus cmdrefreshtui reg floattui reg generaltui reg nexttui reg systemupdatewinheight <winname> +countwinheight <winname> -counttabset <nchars>gdb -ex start# コマンド履歴を保存する
set history save on
set history size 10000
set history filename ~/.gdb_history
# listコマンドで表示する行数
set listsize 25
# 配列の要素を全て表示する
set print elements 0
# 構造体のメンバを1行ずつ表示できる
set print pretty on
# quitコマンドで終了するときに確認しない
define hook-quit
set confirm off
end
# エイリアス
# よく使うコマンドはガンガンエイリアスを定義しておくのがよいと思う
alias -a a = advance
alias -a w = disp
alias -a uw = undisp
alias -a ib = info b
alias -a ia = info args
alias -a il = info locals
alias -a bd = clear