3

gdbでデバッグしたい新しいプロセスを生成するPythonのスクリプトがあります。通常、この子プロセスをデバッグする通常のプロセスを実行します。いくつかの条件が真になるまでこのプロセスをスリープ状態にしてから、別のセッションでこのプロセスの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 プロセスを実行している場合は、python プロセスos.system()の子として "gdb" を通常どおり (たとえば を使用して) 実行します。シェルから実行された場合と同様に、ターミナルを継承し、stdio を引き継ぎます。(また、対話的に実行していない場合は、「gdb プロンプトをください」とはどういう意味かを正確に説明する必要があります)。

また、将来プロセスをデバッグすることがわかっている場合は、適切な場所でプロセスを停止してアタッチする作業を行うよりも、最初に gdb の下でプロセスを生成することをお勧めします。

于 2012-09-04T16:47:34.843 に答える