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

时间:2017-05-15 22:46:13

标签: linux gdb

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

原始问题:

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

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

我不认为我正在寻找正确的事情,因为一些搜索“gdb text file busy”或类似内容并没有产生任何结果。 gdb手册特别提到了这种行为(在运行gdb时再次编译)是支持的,事实上我之前已经多次这样做了。

对于有什么变化以及如何防止这种情况发生的任何指示表示感谢。

1 个答案:

答案 0 :(得分:1)

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