gpt4 book ai didi

java - GDB/MI检测等待输入的目标

转载 作者:行者123 更新时间:2023-11-30 15:55:00 25 4
gpt4 key购买 nike

我正在为我的 Java 项目编写 GDB 包装器。有没有办法识别 GDB 中的目标应用程序何时等待用户输入?

最佳答案

基本上,您需要将标准 I/O 重定向到 POSIX 系统下的伪终端。我将在下面概述如何做到这一点。

编写一个单独的独立“启动器”程序:

在您的 Java 控制程序中:

  1. Open one pair of pseudo terminals (另请参阅上面链接的 pty_fork.c 示例)
  2. 启动启动程序。将其进程 ID 保存在 LAUNCHER_PID 中。启动器最终会阻塞在recvmsg()中,等待接收新的文件描述符。
  3. 在GDB中执行“set follow-fork-mode child”
  4. 指示 GDB 附加到 LAUNDHER_PID
  5. Send the slave end of the pty to the launcher program 。然后启动器将从recvmsg()返回并继续执行fock()、dup2()、execl()序列。

然后您可以检测到正在调试的程序正在等待用户输入,例如将 pty 文件描述符的 master 端转换为 NIO Channel,将其设置为非阻塞模式并monitor the master pty for writing with a Selector .

您需要一个单独的代码路径来支持 Microsoft Windows。

关于java - GDB/MI检测等待输入的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com