用惯了OD,感觉gdb实在是不够用,好在gdb提供宏命令编程,令gdb有无限的可能
另外gdbtui可以启动gdb的文本UI模式,可以让gdb看起来稍微有点像图形化调试器了
我的~目录下.gdbinit 配置(部分是从另一篇文章copy、修改):
提供功能:
迅速到达程序入口并打印基本信息
打印寄存器环境,不同字节长度的16进制显示
输入输出到文件的快捷重定向,dump汇编代码,16进制数值,二进制到文件
从系统汇编代码自动单步到用户代码,以字符串,数值的形式设置内存数据
各种信息显示和断点操作的快捷命令定义,栈数据视图等
# Init parameters,ms style for asm
set output-radix 0x10
#set disassembly-flavor intel
define go
break main
#display /4xw $esp
#disable display 1
#display /5i $pc
run
regs
#st 8
printf "stackwin:\n"
stackwin
printf "\n"
x/6i $pc
end
define logon
set logging file $arg0
set logging on
end
document logon
output to file
usag:logon file
end
define logoff
set logging off
end
document logoff
shut off logon
end
define relogon
set logging redirect on
logon $arg0
end
document relogon
redirect output to file
usag:relogon file
end
define relogoff
set logging redirect off
logoff
end
document relogoff
shut off redirect output
end
define to
set pagination off
disable display
set $flag=0
# relogon /dev/null
while( $flag==0 )
ni
set $addr=(unsigned int)$eip
if( (($addr) & 0x08000000 ) )
set $flag=1
end
end
# relogoff
enable display
set pagination on
x/i $pc
end
document to
if $eip not in your programe,the debug will auto run
until in your programe(through 'ni')
end
define argv
show args
end
document argv
Print program arguments
end
define sdis
display /$arg0i $pc
end
document sdis
print arg0 line disassemble
end
define split
layout split
layout regs
end
define mappings
info proc mappings
end
define st
x /$arg0xw $esp
end
document st
display stack len*4 byte
usage: st 4
end
defin