2016-07-03 8 views
0

私はpthreadのライブラリの系統的ランダムクラッシュ(間接的に使用)があります。を無効にCアサーション

を `ミューテックス - > __ .__日付所有者== 0 'に失敗しました。

このアサーションを無効にすることはできますか?私はデバッグを簡単にするためにコア生成を伴う単純なクラッシュを好むでしょう。このアサーションでは、クラッシュポイントを理解することは難しいです。

私はCMakeListにadd_definitions(-DNDEBUG)を試しましたが、そのアサーションは残ります。

+0

代替:アサーションの失敗によってコアダンプがトリガされる可能性はありますか? – ikegami

+0

私はそれがアサーションでクラッシュするのはかなり確信していますが、OPは実際に最初にUBを呼び出したポイントのコードでクラッシュすることを望んでいます。これはしばしば難しいことですが、valgrind、ASan、UBSanなどのツールが役立つことがあります。 –

+0

@R。クラッシュしていますが、コアダンプが生成されていません。 OPはコアダンプが必要なので、スタックトレースを取得したり、アサーション時に存在していたデータ構造を調べたりすることができます。つまり、これらのツールも役に立つかもしれません。 – ikegami

答えて

3

いいえ、あなたはしたくありません。アサーションはあなたの問題ではなく、それを無効にするだけで、暴走した誤った動作がその原因からさらに遠ざかるように伝播します。あなたが属していない記憶を詰まらせたという事実があなたの問題です。 valgrindやそれに類するツールを使って、起こっていないと思っているよりも、間違ったことを追跡してみてください。

関連する問題