编辑:实际问题在于更新二进制文件的方法,而不是由于gdb问题。有关详细信息,请参阅下面的答案。
原始问题:
最近,当gdb运行程序并在断点处停止时,我无法再编译程序。尝试再次写入二进制文件将导致“文本文件忙”错误。
这是在Ubuntu 16.04 LTS 64位,内核4.4.0-75。
我不认为我正在寻找正确的事情,因为一些搜索“gdb text file busy”或类似内容并没有产生任何结果。 gdb手册特别提到了这种行为(在运行gdb时再次编译)是支持的,事实上我之前已经多次这样做了。
对于有什么变化以及如何防止这种情况发生的任何指示表示感谢。
答案 0 :(得分:1)
进一步搜索表明这篇优秀的帖子https://unix.stackexchange.com/a/188041/10847解释了二进制更新的方法与此相关。在这种情况下,构建系统使用cp a b
复制二进制文件,这将失败。 cp -f a b
将删除b,然后用a覆盖,允许gdb继续调试旧二进制文件,同时将新二进制文件写入磁盘。