Debugging GDB在哪些情况下启用后台处理?

Debugging GDB在哪些情况下启用后台处理?,debugging,gdb,Debugging,Gdb,我目前正在开发一个包装器库,以便从我的应用程序启动GDB并让它调试程序 我之所以使用MinGW32,是因为我使用的是Ada-Gnat编译器,它在windows上只有32位可用。我的操作系统是windows Server 2008R2 64位 我无法在后台使用“run&”在调试器中启动应用程序。GDB报告后台处理在我的配置上不可用 我对GDB比较陌生,我的理解是,我的测试证实了这一点,即在调试正在运行且未处于后台模式时,我不能向GDB发送新命令。这意味着我不能中断调试对象,或者换句话说,如果我忘记

我目前正在开发一个包装器库,以便从我的应用程序启动GDB并让它调试程序

我之所以使用MinGW32,是因为我使用的是Ada-Gnat编译器,它在windows上只有32位可用。我的操作系统是windows Server 2008R2 64位

我无法在后台使用“run&”在调试器中启动应用程序。GDB报告后台处理在我的配置上不可用

我对GDB比较陌生,我的理解是,我的测试证实了这一点,即在调试正在运行且未处于后台模式时,我不能向GDB发送新命令。这意味着我不能中断调试对象,或者换句话说,如果我忘记设置断点,就没有办法中断它,设置断点并继续。除非它在后台模式下运行,这意味着GDB在调试对象运行时接受命令

我的问题是:在Windows上通常如此,还是来自我的特定设置?
在哪些系统上可以使用后台处理?

后台处理需要“目标异步”功能,该功能仅由远程和Linux本机目标实现。因此,如果您的gdb正在使用gdbserver,它可能会工作。在大多数情况下,将目标移植为具有异步功能并不困难,但是没有人为Windows本机目标做过这项工作


但请注意,其他注释是正确的。在Windows上使用MI时,有一些方法可以中断gdb。不幸的是,我不是Windows专家,我不知道那是什么。尽管如此,您不需要target async来执行此操作。

在Linux上不需要。顺便说一句:在后台运行应用程序能完成什么?您研究过GDB/MI()吗?是的,我正在用这本书来编写代码,谢谢。我更新了我的问题以包括答案,也许我不太清楚我的理由你可以打断它。在命令模式下,它是通过CTRL+c控制的,当通过MI控制时,我想你需要发送一个信号。然后你可以设置额外的断点并继续。在windows下你不能真正发送信号。我尝试了windows下唯一可用的功能,现在记不起它的名字,但它只允许你向控制台发送Ctr-C和中断信号,没有一个有效。我认为信号机制在WindowsEclipse上没有很好地实现,Eclipse完全可以根据用户请求暂停gdb,即使在Windows上也是如此。您可以查看源代码(我这里没有)。好的,谢谢,这至少有点帮助。我很确定这在Windows上是不可能的,因为后台运行不起作用,但我现在至少要继续寻找一种方法