7

C アプリケーションにチェック ユニット テスト フレームワークを使用しようとしています。しかし、次の 2 つの理由から、デバッガー (gdb) を使用できません。

  • 最初に、いくつかの複雑なマクロ (START_TESTおよびEND_TEST) の使用を確認します。デバッガーは、これら 2 つのマクロの間のコードにブレークポイントを配置するのに問題があります (実際、ソフトウェア ブレークポイントを配置することはできますが、gdb には表示されません)。

  • 次に、割り込みの動作を再定義して、ある種の例外を定義することを確認します。したがって、ハードウェア ブレークポイントを設定しようとすると、ハードウェア ブレークポイントはテストの失敗と見なされるため、テストは失敗して終了します。

誰かがすでにこの問題に遭遇し、解決策を持っていますか?

4

4 に答える 4

7

実際には、フォークモードも使用できます。

gdbには、フォークの動作に関連する2つの興味深いオプションがあります。-
detach-on-forkこれをfalseに設定)
- follow-on-fork(親または子のいずれか。私は常に子を取ります)

これにより、gdbは子プロセスに従います。子プロセスが終了したら、inferiorコマンドを使用して手動で親プロセスに戻す必要があります。

于 2010-09-04T06:50:19.870 に答える
0

TAP (Test Anything Protocol)を試してみてください…実装、出荷、デバッグがはるかに簡単です。また、それを認識するのは非常に簡単で、とvalgrindうまく遊ぶ傾向がありgdbます。

于 2009-10-30T14:43:33.570 に答える