使用gdb进行无源代码调试

3
我需要使用gdb调试一个被gcc编译过且带有调试选项的程序。我的问题是源代码不在我用来调试和运行该程序的同一台机器上,因此我无法使用远程gdb调试。在gdb中前进时是否有一种方法可以知道行/文件位置?还有其他解决这个问题的方法吗?
谢谢。

@AStopher 嗯,当我尝试进行研究时,这个页面首先出现在搜索结果中。永远不要告诉人们在stackoverflow上先谷歌问题,否则你会让他们陷入无限循环。 - Youda008
@Youda008 那是6年前的事了...当时最高的结果就是OP复制粘贴到他们的答案中的。 - AStopher
3个回答

3
你可以使用汇编代码进行调试。 objdump -d 显示所有内容。然后在main函数处使用断点运行gdb,并使用ni来运行下一条指令(汇编)。哦,不要忘记启用display $pc会有所帮助。
上述建议仅适用于玩具代码。
如果您已安装IDA(和插件),则可以使用其restore to C code功能。

1
如果您遇到“分段错误”,可以通过启用Linux机器上的核心转储来使用它。

ulimit -c无限

然后将核心转储文件传输到其他机器,其中您获得了源代码,并使用coredump文件运行gdb以确定在哪个代码中出现分段错误。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接