をセグメンテーション違反: -デバッグexecが正常に動作しますが、通常の一つは、私は次のコードを持っている
void someFunc (someStruct* obj) {
cout << obj->some_member;
}
someFuncは私が何もコントロールの上に持っていないライブラリから取得コールバックです。これをgdbon = trueでコンパイルすると、生成されたexecはまさしくそのように動作します。 一方、上記のフラグを付けずにコンパイルした場合、execはsegfaultを返します。 GDBにコアダンプを開くには示してい
obj=Variable "obj" is not available.
私は、問題をさらに絞り込むことができます(または何がおそらく間違っているかもしれない)方法上の任意のアイデアを?
EDIT: - これは問題ではないことが判明しました。安全性の高いメモリアクセスがコードの後半にあり、リリースビルド(最適化を含むもの)が上記のコード行でgdbに問題があるように見えました。
void someFunc (someStruct* obj) {
if (obj==NULL) return;
cout<<"here1\n";
cout<<obj->some_member;
cout<<"here2\n"
}
そして、これはランダムに
時々here1
と
here1
here2
他のいくつかの時間をもたらすだろう - :本当に驚くべき何 は、私はこれを行うにしようとしたことです。これはちょっとビット再び私を混同... しかし、問題は別の場所だった...
を与えるべきである、私は瞬間のカップル私自身を掲示した後、この優れた質問を見つけました。しかし、助けていないようです。 http://stackoverflow.com/questions/1762088/common-reasons-for-bugs-in-release-version-not-present-in-debug-mode – owagh
objの値を印刷してみてください。すなわちcout << obj。 – akhisp