目前,GDB在fork之后跟随子进程有一个问题。我在网上看到的一个解决办法是使用以下说明进行修补:
call 0x8048740 <fork@plt>
详情如下:
gdb$ set *(0x08048d1f+1)=0x90909090
gdb$ set *(0x08048d1f)=0x9090c033这样做会将指令设置为:-
xor eax,eax
nop
nop
nop因此,本应作为子进程执行的代码由父进程执行,因此无法对其进行调试。但是,每次我必须调试进程时都要键入两个步骤语句,这太乏味了。有没有什么方法可以让gdb在我每次附加到进程时都对这些指令进行修补?某种自动化,尽管它可能是有限的?
发布于 2012-06-15 14:33:51
有几种方法可以使用gdb extensions扩展GDB命令列表。Python脚本支持是GDB自7.1版本以来的最新发展。但是,考虑到您的需求,您不需要编写太多的脚本。您可以使用最简单的define命令。
我以前回答过一个similar question,你也可以用同样的方法。
https://stackoverflow.com/questions/11045548
复制相似问题