答えて
は、私はあなたを助けるためにCppUTestまたはEclipseで特別な何も知りませんが、いくつかの一般的なセグメンテーション違反のデバッグのアイデアは、ここでは、適切なようだ:
は、例えばprintfの(紅潮 print文を追加します。 (...)+ fflush(stdout)またはfprintf(stderr、...))をコードに追加し、何が印刷されるかを確認します。 が正確ににクラッシュするまで、一度に数枚の印刷でバイナリ検索で行います。これは昔のように聞こえるが、非常に効果的である。ここで私はこの有名なテクニックについて語っているグーグルグーグルを見つけたガイドです:http://www.floccinaucinihilipilification.net/blog/2011/3/24/debugging-via-binary-search.html
デバッグシンボルでコードをコンパイルし、デバッガで実行します。あなたがセグメンテーションを打つと、バックトレースを求めて、何が起こったのか把握できるかどうかを確認します。これを行うときには、特にgraphical debuggerを使用すると便利です。
debug malloc libraryなどのデバッグツールやvalgrindスイートのコードを実行します。これは、segfaultsの根本原因であるが、segfaultが生成される正確な場所で発生していない問題を捕捉する可能性があります(例えば、二重解放、後で使用されるバインドされた配列アクセスのclobberingポインタの外れなど)。
あなたの質問にいくつかのコードを追加して、あなたが何を相手にしているかをわかりやすく伝えることができれば助かります。詳細を知らされていない場合、私は次のように提案します:
-v
を[デバッグ]ダイアログの実行可能な引数に追加します。テストケースが実行されるときに、テストケースの名前が表示されます。印刷される最後の名前は、セグメンテーションフォルトが発生したテストです。- テストケースにコードを呼び出す、そのテストケースにブレークポイントを設定します。
- segfaultが発生するまでコードにステップインします。
- segfaultの原因となった値(たいていの場合、ぶら下がりポインタ)をトレースして、それがなぜNULLか初期化されなかったのかを調べます。
- 1. CppUtestの例のリンクエラー
- 2. CppUTestユニットテストフレームワーク複数定義例外
- 3. ネイティブC /マネージC++デバッグ
- 4. デバッグCGI C++アプリケーション
- 5. C++プリプロセッサのデバッグ
- 6. C#、HTTPHandlerのデバッグ
- 7. デバッグECX_BAD_ACCESSエラーC++
- 8. Xcode C++のデバッグ
- 9. C++コンパイラエラーのデバッグ
- 10. デバッグC++コード
- 11. C#オブジェクトイニシャライザのデバッグ
- 12. Eclipse C/C++ GDBでのデバッグ
- 13. デバッグC/C++言語は、ブレークポイント
- 14. CppUtest:模擬関数からカスタム構造体を返す方法
- 15. C#のデバッグWebサービスプロキシクラス
- 16. デバッグC++プログラムは、VS2010
- 17. ネイティブC++スレッドのデバッグ
- 18. C#WinFormアプリケーションのデバッグ
- 19. Cデバッグ変動が
- 20. デバッグ中のC++ LNK1561
- 21. cpputest - 出力テスト・ケースの詳細については
- 22. C#アプリケーションからのC .dllファイルのデバッグ
- 23. 混在モード(C#、C++)アプリケーションのデバッグ
- 24. Borland C++ Builder 6.0でのデバッグ
- 25. コマンドラインでデバッグするC#
- 26. デバッグC#Excelのアドインは、Windows
- 27. C++:リファレンスカウントシステムでのメモリリークのデバッグ
- 28. C#デバッグ:魔法のシステムクロックリストア
- 29. xcodeでデバッグするC++
- 30. ステップバイステップのデバッグ目的c
ありがとうございました。私はgdbでいくつかのデバッグを行いましたが、デバッグ環境の設定に慣れていません。 2番目と3番目のポイントは、セットアップに役立つ参照やリンクです。 – Saaras
私はあなたを助けるかもしれないいくつかのリンクを追加しました。 (私は大量のEclipseユーザーではないので、Eclipse固有のものはありませんが、これらの一般的なテクニックはどこでも動作します)。 – wjl