如何在二进制文件在 gdb 中运行时对其进行修改



编辑:实际问题在于更新二进制文件的方法,而不是由于gdb的问题。有关详细信息,请参阅下面的答案。

原始问题:

最近,当 gdb 运行程序并在断点处停止时,我无法再编译程序。尝试再次写入二进制文件将导致"文本文件繁忙"错误。

这是在 Ubuntu 16.04 LTS 64 位内核 4.4.0-75 上。

我不认为我在寻找正确的东西,因为对"gdb 文本文件繁忙"或类似搜索不会产生任何结果。gdb 手册特别提到了这种行为(在运行 gdb 时再次编译(是受支持的,事实上我以前已经做过很多次了。

希望提供有关已更改的内容以及如何防止这种情况发生的任何指示。

一些进一步的搜索表明了这个优秀的帖子 https://unix.stackexchange.com/a/188041/10847,它解释了更新二进制文件的方法在这里是相关的。在这种情况下,构建系统使用cp a b复制二进制文件,这将失败。 cp -f a b将删除 b,然后用 a 覆盖,允许 gdb 在将新二进制文件写入磁盘时继续调试旧二进制文件。

最新更新