文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>定制GDB的反汇编输出带有源文件提示

定制GDB的反汇编输出带有源文件提示

时间:2010-03-10  来源:slimzhao

在VS.NET的可视化调试环境下, 程序的反汇编输出与源代码行是混合在一起的, 一行源代码, 接下来是这一行源代码对应的汇编指令, 很直观.

仔细调校gcc 的选项, 也可以生成类似的格式
gcc -g -Wa,-alhs=test.s -fverbose-asm test.c

但上面的命令生成的仅止于静态的代码, 而不是程序实际运行起来后经过loader 修改后的指令.

gdb的调试环境中, disassemble 命令的输出却是干巴巴地直接把指令丢出来.

一番苦思之后, 我调试出下面的自定义gdb 命令可以实现上述功能, 让源码与汇编输出直观上看起来就有明显的对应关系, 参数是两个行号
disline 7 9
就会显示第7到第9行, 不包括第9行的汇编输出

代码如下:
define disline
set var $i=$arg0
set logging file ~/gdb.txt
set logging overwrite on
set logging redirect on

while $i < $arg1
    set logging on
    info line $i
    set logging off

    shell sed 's/.*\(starts\|ends\) at \(address \)\?\([^ ]*\).*/set var $\1=\3/g;$a\'$'\n''disass $starts $ends'  gdb.txt > gdb_script.txt

    printf "Line %04d: ", $i
    list $i,$i
    source gdb_script.txt

    set var $i=$i+1
end
end

以上代码还需要调整, 以处理有些代码行不对应任何指令的情况.
相关阅读 更多 +
排行榜 更多 +
试着飞手游下载

试着飞手游下载

休闲益智 下载
血染小镇(功能菜单)中文版下载

血染小镇(功能菜单)中文版下载

飞行射击 下载
泰坦之旅高爆版下载

泰坦之旅高爆版下载

角色扮演 下载