2012-02-25 5 views
0

C++プログラムのあらゆる関数や行に対して何らかの動作を呼び出す方法を知っている人はいますか?各関数の振る舞いを定義しています。C++

私は、アプリケーションの特定の時点でソフトウェアを終了させることによってソフトウェアを検証し、次回のプロセスの起動が、以前にプロセスが終了したすべての時点で回復を処理できることを確認したいと考えています。

本質的に、私はC++でスクリプトを作成する方法を探しているので、マクロを使用してポイントを定義する必要はなく、アプリケーションにこれらの「デスポイント」をすべて循環させてプロセスはすべてのものを自動化された方法で実行して、それらのすべての単一のプロセスから回復することができます。

私は簡単にDEATH_POINT()という名前のマクロを作成し、プロセスを終了するかどうかをチェックすることができますが、コード。

+0

特定のプラットフォーム/コンパイラをターゲットにしていますか? –

+0

ああ、はい!私はそれを言及すべきです。 gcc 4.6.1/linux。 –

答えて

1

使用しているコンパイラによっては、関数に入るたびに自動的に関数を呼び出させる方法があります。それはあなたが必要とすることをするかもしれません。 http://msdn.microsoft.com/en-us/library/c63a9b7h.aspx そしてトップの答えはここにGCCでそれをやっについての情報を持っています:Visual Studio用

情報ここにあります私はあなたが命令ごとの単位で1つのその一歩先、およびテストを行く提案Automatically adding Enter/Exit Function Logs to a Project

+0

うわー、ええ。良い引退忍者を見つける。私はGCC計測器機能を完全に使うことができました。関数の細かさとは対照的に、細分化してこれを行う方法はありますか?それにかかわらず、それは非常に役立ちます! –

+0

いいえ、これは関数呼び出しごとです。 @BenVoigtはデバッグAPIをより細かく使用することについて正しいです。 –

1

文、行、または行全体ではなく、

デバッガAPIを使用してプログラムでブレークポイントを設定できる必要があります(ただし、IIRCのヘルパープロセスが必要です)。ブレークポイントに達すると、プロセスは中断されます。また、ブレークポイントに達するとイベントを受け取ってプロセスを終了することができます。

+0

これはmsビジュアルスタジオ用ですか?私はgccを使っています... –

+0

@MichaelXu:linuxでそれをすることはできませんが、linuxのデバッグAPIとdwarf2のデバッグ情報を使うだけです。私は、 'gdb'ソースコード、またはLinux用の他のオープンソースデバッガを読むことをお勧めします。 –

関連する問題