0

チェックを介して実行されるコードのブレークポイントで gdb を停止するにはどうすればよいですか?

#include<check>
int main(int argc, char **argv)
{
    Suite *s = create_suite(); //create a test suite
    SRunner *sr = srunner_create(s);
    srunner_run_all(sr, CK_NORMAL); 
}

srunner_run_all(sr, CK_NORMAL)私のコードのどこかで実行されます。そのコード内にブレークポイントを設定できます (保留中のブレークポイントのおかげで問題のない共有ライブラリです)。共有ライブラリがロードされるとinfo b、ブレークポイントが正しく出力されます。それにもかかわらず、gdb はブレークポイントで停止しません。

編集:上記のコード内にブレークポイントを設定すると、gdb は停止します。

4

1 に答える 1

0

を使用するsrunner_run_all(sr, CK_NOFORK);とうまくいきました。チェックは、テスト用の新しいプロセスをフォークします。これにより、テスト プログラムがクラッシュすることなく、セグ フォールトなどを処理および報告できます。

詳細については、check のドキュメントを参照してください。

于 2013-07-07T07:33:27.917 に答える