我正在尝试调试一个简单的程序,但 gdb 正在运行。我收到内部错误,然后 gdb 说有一个错误。当我尝试停止正在运行的程序时会发生这种情况。发送键盘中断返回调试器后,我尝试使用quit
. 但是当我这样做时,我得到了这个(我还包括在我完成问题时会发生什么):
A debugging session is active.
Inferior 1 [process 1239] will be killed.
Quit anyway? (y or n) y
../../gdb/target.c:2149: internal-error: void target_mourn_inferior(ptid_t): Assertion `ptid == inferior_ptid' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) y
This is a bug, please report it. For instructions, see:
<https://www.gnu.org/software/gdb/bugs/>.
../../gdb/target.c:2149: internal-error: void target_mourn_inferior(ptid_t): Assertion `ptid == inferior_ptid' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) y
Abort trap: 6 (core dumped)
有人可以告诉我发生了什么,为什么会发生,以及如何解决?
有人能告诉我发生了什么吗
GDB已经告诉你:
This is a bug, please report it. For instructions, see: <https://www.gnu.org/software/gdb/bugs/>.
如果一个程序曾经报告它本身有一个错误,那么它总是正确的。即使它认为有问题的行为实际上不是,那么程序也有问题。
在这种特殊情况下,GDB 在自己的代码中报告断言失败。这绝对是一个实现错误,而不是一个错误报告错误。
为什么会发生
它可能是由正在调试的程序的异常触发的——这本身可能有问题——但这并不能使它成为 GDB 的错误。
以及如何修复它?
您不太可能自己修复 gdb 错误,但可能有您可以升级到的较新版本,其中该错误已得到修复。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句