draemonash2のメモ書き
gcc -g ./a.out
gdb ./a.out
gdb ./a.out -x scriptname
gdb --args a.out AAAA
attach pid
【プロセスデタッチ】detach
r
q
start #main関数の入口に1回だけのブレークポイントを張ってプログラムを開始する
【引数指定実行】run --foo --bar
n
ni
s
si
c
fin
u
【処理実行(特定アドレス到達まで)(until)】u \*main+43
【ステップアウト】ret -1 #現在の関数を戻り値-1として強制的に抜ける
b funcname
b \*0x08048695
tb funcname
b bubblesort.c:30
b filename if n == 1
watch i==10 #変数は静的変数のみ指定できる(=ウォッチポイントともいう)
rwatch \*0xbffff76c
awatch \*0xbffff76c
i b
d <bnum> #ブレークポイント番号(info breakpointsにて取得)を指定する
clear <bnum>
disable <bnum>
enable <bnum>
command <bnum>
catch syscall write
ignore <bnum> 9 #ブレークポイント番号1を9回無視する
【ブレークポイント停止条件追加】condition <bnum> if n == 1
l
【コード表示(関数指定)(list)】l funcname
display
display varname
info display
disable display 1 #info displayで取得した番号を指定する
enable display 1 #info displayで取得した番号を指定する
【停止時表示削除】undisplay 1 #info displayで取得した番号を指定する
dir ...
【ソースディレクトリ一覧出力】show directories
i r
p var1
p array
p (char[8]) name
p &name
p/x name #16進表示
whatis array
ptype array
【変数値設定】set array[3] = 199
i proc map
【スタックフレーム表示】frame 0 #フレーム番号
bt #現在関数呼出しまでの経路表示
bt full
up
down
【バックトレース】where #backtraceのエイリアス
info macro マクロ名
i lo
w var1
shell ls
【シェルコマンド実行2】!ls
disassemble /m
source scriptname
【gdbinit再読み込み】source /home/tsuyoshi/.gdbinit
info threads
thread 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 watch
define 関数名 ~ 処理 ~ end
layout asm
layout src
layout regs
tui disable
info win
layout next
layout prev
layout src
layout asm
layout split
layout regs
focus next
focus prev
focus src
focus asm
focus regs
focus cmd
refresh
tui reg float
tui reg general
tui reg next
tui reg system
update
winheight <winname> +count
winheight <winname> -count
tabset <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