だから私は今、奇妙なエラーに数回遭遇し、問題を特定するためのいくつかの良い方向を探しています。
基本的に私が見ているのはセグメンテーション違反です。症状は次のとおりです。
- これは、プログラムがデバッグではなくリリースモードの場合にのみ発生します。
これはセグメンテーション違反として表示され、GDBは関数の最後にある//にあることを通知
_list_release
し_free()
ますfree()
。Program received signal SIGSEGV, Segmentation fault.
0xb0328af8 in _list_release () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
(gdb) bt
0 0xb0328af8 in _list_release () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
1 0xb032a464 in __free () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
2 0xb0329f7d in free () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3
動的メモリを使用していません(Eigen(または他のライブラリ)に表示される可能性があるものを除く)
- 関数の終わりの直前にすべてのローカル変数を出力できるので、ダブルフリーではありません。
前回これが起こったのは、これらすべての問題に当てはまるメモリ障害でした。迷惑な今回は問題が見つかりません。
私がやりたいことは次のとおりです。
- これは非常に便利です。デバッグモードでこのエラーを強制するにはどうすればよいですか。そうすれば、GDBの方がはるかに役立ちます。
- 小さなバガーが問題を引き起こしているものを追跡するための最良の方法は何ですか。注: valgrindは使用できません。使用しているオペレーティングシステムでは機能しません(QNX)
どんな助けでも素晴らしいでしょう。