~/.gdbinit 에 넣으면 됩니다.
정~~말 편하네요.
#
# O’RELLY 의 Security Wairror 책에 나오는 .gdbinit 의 설정 예문 입니다.
# 여러 커맨드를 정의 (define) 해둠으로서, 디버깅 과정을 쉽게 만들어 줍니다. — mins at fsu.or.kr
#
# ______________breakpoint aliases____________ _
define bpl
info breakpoints
end
define bpc
clear $arg0
end
define bpe
enable $arg0
end
define bpd
disable $arg0
end
# ______________process information___________ _
define stack
info stack
info frame
info args
info locals
end
define reg
printf ” eax:%08X ebx:%08X ecx:%08X”, $eax, $ebx, $ecx
printf ” edx:%08X\teflags:%08X\n”, $edx, $eflags
printf ” esi:%08X edi:%08X esp:%08X”, $esi, $edi, $esp
printf ” ebp:%08X\teip:%08X\n”, $ebp, $eip
printf ” cs:%04X ds:%04X es:%04X”, $cs, $ds, $es
printf ” fs:%04X gs:%04X ss:%04X\n”, $fs, $gs, $ss
end
define func
info functions
end
define var
info variables
end
define lib
info sharedlibrary
end
define sig
info signals
end
define thread
info threads
end
define u
info udot
end
define dis
disassemble $arg0
end
# ________________hex/ascii dump an address_____________ _
define hexdump
printf “%08X : “, $arg0
printf “%02X %02X %02X %02X %02X %02X %02X %02X”, *(unsigned char*)($arg0), *(unsigned char*)($arg0 + 1),\
*(unsigned char*)($arg0 + 2), *(unsigned char*)($arg0 + 3), *(unsigned char*)($arg0 + 4),\
*(unsigned char*)($arg0 + 5), *(unsigned char*)($arg0 + 6), *(unsigned char*)($arg0 + 7)
printf ” – ”
printf “%02X %02X %02X %02X %02X %02X %02X %02X “, *(unsigned char*)($arg0 + 8), *(unsigned char*)($arg0 + 9),\
*(unsigned char*)($arg0 + 10), *(unsigned char*)($arg0 + 11), *(unsigned char*)($arg0 + 12),\
*(unsigned char*)($arg0 + 13), *(unsigned char*)($arg0 + 14), *(unsigned char*)($arg0 + 15)
printf “%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n”, *(unsigned char*)($arg0),\
*(unsigned char*)($arg0 + 1), *(unsigned char*)($arg0 + 2), *(unsigned char*)($arg0 + 3), \
*(unsigned char*)($arg0 + 4), *(unsigned char*)($arg0 + 5), *(unsigned char*)($arg0 + 6), \
*(unsigned char*)($arg0 + 7), *(unsigned char*)($arg0 + 8), *(unsigned char*)($arg0 + 9), \
*(unsigned char*)($arg0 + 10), *(unsigned char*)($arg0 + 11), *(unsigned char*)($arg0 + 12), \
*(unsigned char*)($arg0 + 13), *(unsigned char*)($arg0 + 14), *(unsigned char*)($arg0 + 15)
end
# ________________process context_____________ _
define context
printf “______________________________________ _”
printf “_______________________________________ _\n”
reg
printf “[%04X:%08X]————————“, $ss, $esp
printf “———————————[stack]\n”
hexdump $sp+48
hexdump $sp+32
hexdump $sp+16
hexdump $sp
printf “[%04X:%08X]————————“, $cs, $eip
printf “———————————[ code]\n”
x /8i $pc
printf “—————————————”
printf “—————————————\n”
end
# ________________process control_____________ _
define n
ni
context
end
define c
continue
context
end
define go
stepi $arg0
context
end
define goto
tbreak $arg0
continue
context
end
define pret
finish
context
end
define start
tbreak _start
r
context
end
define main
tbreak main
r
context
end
# __________________gdb options________________ _
set confirm 0
set verbose off
set prompt gdb>
set output-radix 0x10
set input-radix 0x10