在我完成调试之前,我已经厌倦了不得不保持我的源代码不变。每次我更改代码时,GDB都会开始抱怨它:
警告:源文件比可执行文件更新。
直到我重新编译它,这不能总是快速完成。我认为如果可以将程序的源代码包含在其二进制文件中并使GDB使用它而不是其最新版本,那将会很棒。
有人可以建议一种方法吗?这是否已实施?
答案 0 :(得分:3)
GCC是开源的 - 您可以修复它。当然,您可能必须修改LD才能正确处理信息,并且您必须修复GDB才能使用嵌入式源代码。您将使用非标准格式的调试信息,因此您可能必须修改操纵目标文件的其他工具。
所以,可能性存在。但是,与世界上其他人一样,这样做更容易,并且在完成调试之前保持源头。通常,如果需要,可以在重建可执行文件的同时保持单个GDB会话运行。而且,通常,最简单的方法是调试当前版本的代码而不是昨天的版本。如果你确实需要调试昨天的版本,你需要昨天的代码(你确实有一个好的VCS,不是吗?)这样你就可以看到昨天的代码实际上有什么问题,而不是今天代码的修改版本
我会因为提出问题而给你信任 - 需要一些横向思考来提出这个想法。做得好!但实际上,你的建议实际上并非易事。
答案 1 :(得分:2)
编译代码后,可以将源代码复制到其他位置。
然后,在gdb中,可以设置gdb在其中查找源代码的目录:
set directories /your/new/directory
。
现在,gdb将使用该目录中的源代码,并且您可以更改原始源代码而无需gdb通知。