3

アイデアは、プログラムに特定の入力が与えられると、どういうわけか自動的に完全なプログラムにステップインし、その制御フローを、クラスとその変数のように使用されているすべてのデータと共にダンプしたいということです。これを行う簡単な方法はありますか?または、これは gdb を介したスクリプトによって実行できますか、または gdb で変更する必要がありますか?

この質問の理由は、デバッグ ツールに関するアイデアのためです。それがすることはこれです。プログラムに 2 つの異なる入力が与えられた場合、1 つは正しくない出力を引き起こし、もう 1 つは正しい出力を引き起こした場合、制御フローのどの部分が異なるかがわかります。

したがって、必要になると思うのは、差分エンジンに入るこれら 2 つの制御フローの完全なダンプです。そして、2 つの入力が同様の制御フローに従っている場合、(多くの場合) それらの diff は、バグが存在する理由についての良いアイデアを提供します。

これは、その上に構築された多くの機能を備えた非常に魅力的なツールにすることができます。

4

3 に答える 3

2

環境についてもう少し教えてください。たとえば、dtrace は、Solaris や Leopard でこれを見事に処理します。gprof も別の可能性です。

これのバンプバージョンは、yes(1)またはexpect(1)で実行できます。

さらに詳しく知りたい場合は、一部のバージョンでGDB を Python でスクリプト化できます。

于 2009-04-18T21:09:36.080 に答える
2

あなたが説明していることは、gdbの「トレースポイントのデバッグ」に少し似ています。gdb の内部ヘルプ「help tracepoint」を参照してください。こちらのホワイトペーパーも参照できます: http://sourceware.org/gdb/talks/esc-west-1999/

残念ながら、この機能は現在ネイティブ デバッグ用に実装されていませんが、CodeSourcery が何らかの作業を行っていると思います。

于 2009-10-09T19:59:13.113 に答える
1

これを確認してください。Coverity とは異なり、Fenris は無料で広く使用されています。

次のN実行行をGDBで自動的に印刷する方法は?

于 2009-07-14T02:59:03.407 に答える