2017-01-23 3 views
0

とPython SBThread eBroadcastBitSelectedFrameChangedイベントスレッドをトレースlldb使うので、私が牽引方法私はそれが呼び出すすべての記号をログに記録して、スレッドをトレースする

1、lldb設定リスト見つかっする方法:

「ターゲットを.process.thread 'variables: trace-thread - trueの場合、このスレッドはシングルステップとログの実行を行います。

それはlldbが実行をログに記録しますが、ログは

2であり、私は見つけることができない、lldbパイソンSBThreadがイベントeBroadcastBitSelectedFrameChangedを持って、私はそれが時にスレッド枠の変更をコールバックすると思いますが、SBThreadが持っている理由を意味放送者はいませんか?

答えて

0

1)この設定は、ほとんどlldbのステッピングアルゴリズムの問​​題を診断するのに役立ちました。それはすべての実行が命令の一歩ずつ進むことになるので、あなたのプログラムは非常にゆっくり実行されるので、その目的以外には使用されていません(そして、 、ビット腐っているかもしれません)。出力はデバッガの標準出力に送られます。

2)eBroadcastBitSelectedFrameChangedは、ユーザーがコマンドラインコマンドで選択したフレームを変更した場合にのみ送信されます。これは、XcodeのようなGUIを許可し、コマンドラインのやりとりを可能にして、GUIをコンソール内のユーザコマンドと同期させておくことを意味しています。スレッドのためのGetBroadcasterはありません。なぜなら、スレッドは出たり来たりするので、通常は特定のスレッドだけでなく、すべてのスレッドを聴きたいからです。これを行うには、SBThread.GetBroadcasterClassNameに電話し、クラス名(StartListeningForEventClass)でイベントのリスナーにサインインします。

特定のスレッドを聴く必要がある場合は、バグトラッカーに強化要求をhttp://lldb.llvm.orgに提出してください。

+0

ありがとうございます。 – laikof

+0

私はlldbを使用してアームレベル命令の実行を収集する方法はありますか?どの命令が実行されたか、またはどのシンボルが呼び出されたかなどの情報が含まれています – laikof

+0

lldbはこのような調査のために多くの情報を提供しません。また、非常に遅くなるだけでなく、新しいスレッドをすべて捕捉して停止させる必要があるため、それらをシングルステップで実行することもできます。 llvm-covやInstrumentsのようなカバレッジツールを何をしようとしているかによって、より良い賭けになるかもしれません。 –

関連する問題