代码之家  ›  专栏  ›  技术社区  ›  Ryan

在没有信号的情况下停止GDB中的次进程?

  •  4
  • Ryan  · 技术社区  · 17 年前

    有没有一种方法可以在不使用Ctrl+C(或从另一个进程发送的等效信号?)的情况下停止次进程?我使用的是windows平台,正在从另一个进程管理GDB,因此没有信号的概念,当我的程序在没有任何断点的情况下自由运行时,似乎没有一种好的方法来中断它的执行。

    为清晰起见,请编辑:

    这里涉及两个过程。有一个进程A,它是GDB的父进程。GDB正在管理一个进程,但它在一个远程主机上,我们称之为进程C。

    当我告诉GDB“运行”时,它会启动远程主机上的进程C,并阻塞进程C,直到遇到断点、进程C遇到错误或致命信号,或者GDB本身接收到中断信号。如果以交互方式工作,只需在GDB命令控制台按CTRL+C,GDB将其解释为SIGINT(不知何故),从而触发GDB停止进程C。因为我实际上是用进程A管理GDB(而不是在shell中以交互方式处理它),所以我不能很好地按Ctrl+C,而且windows没有像UNIX中那样的“信号”本机概念,所以当GDB阻塞等待进程C中断或命中断点时,我不知道如何中断它。

    1 回复  |  直到 17 年前
        1
  •  2
  •   Kevin    15 年前

    EMACS 使用 MI 要控制GDB,您应该检查他们如何/是否提供这样的服务 ctrl-C 机制,以及它们是如何实现的。

    编辑: -exec-interrupt 打断了执行。

    推荐文章