在没有源代码的情况下使用gdb进行调试



我必须用gdb调试一个程序。这个程序是用gcc的调试选项编译的。我的问题是源代码不在我用来调试和运行这个程序的同一台机器上。我不能使用远程gdb调试。在gdb中前进时,有没有办法现在到达行/文件的位置?这个问题还有其他解决办法吗?

感谢

您可以使用汇编代码对其进行调试。

objdump -d显示了所有内容。然后在main函数处运行带有break的gdb,并运行ni以运行下一条指令(程序集)。哦,别忘了启用display $pc会对你有所帮助。

以上建议仅适用于玩具代码。

如果你已经安装了IDA(和插件),你可以使用它的restore to C code函数。

如果您遇到segmentation fault,您可以通过启用在linux机器上使用核心转储

ulimit-c无限制

然后将核心转储文件传输到另一台拥有源代码的机器上,并使用核心转储文件运行gdb,以识别代码中出现分段错误的位置。

我在gdb中找到了命令info line,它显示了源文件中的位置,即使gdb没有找到源文件。这个解决方法对我来说似乎还可以。

最新更新