3

我在 python 中有一个脚本,它产生了一个我想在 gdb 中调试的新进程。通常我会做通常的过程来调试这个子进程。将睡眠置于此进程中,直到某些条件为真,然后通过此进程的 pid 在另一个会话中附加 gdb,放置一些断点并使条件为真,以便它在睡眠后继续。

我想以自动方式执行此操作,例如 python 脚本本身会产生一个新的 gdb 进程并给我一个 gdb 提示符?我对诅咒有点了解,所以我可以用它做点什么。但主要问题是如何在 python 中生成交互式进程(此处为 gdb)以及如何向用户提供 gdb 提示,我不太清楚。任何帮助表示赞赏。

4

2 回答 2

0

在这种情况下,可以使用 Expect 或 pexpect python 库来执行此操作。

下面的简单 pexpect 用法示例:

import pexpect
child = pexpect.spawn("mc")
child.interact() # will return when mc finish
于 2013-09-25T06:40:47.400 回答
0

如果您从终端以交互方式运行 python 进程,只需正常运行“gdb”(例如使用os.system())作为 python 进程的子进程。它将继承终端并接管 stdio,就像它从 shell 运行一样。(如果您没有以交互方式运行它,则需要解释“给我一个 gdb 提示符”的确切含义)。

此外,如果您知道将来要调试该进程,那么最好首先在 gdb 下生成该进程,而不是让它在正确的位置停止并附加它。

于 2012-09-04T16:47:34.843 回答