编辑:实际问题在于更新二进制文件的方法,而不是由于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 在将新二进制文件写入磁盘时继续调试旧二进制文件。