1
我有下面的代碼: -調試執行工作正常,但正常的出現segfaults
void someFunc (someStruct* obj) {
cout << obj->some_member;
}
someFunc是一個回調,我從我無法控制庫獲得。如果我用gdbon = true編譯這個,那麼生成的exec就像它應該做的那樣工作。另一方面,如果我編譯它沒有上面的標誌,執行段錯誤。開放核心轉儲在gdb顯示
obj=Variable "obj" is not available.
我如何能進一步縮小問題的範圍(或什麼有可能會是錯誤的)任何想法?
編輯: - 嘿原來這是一個沒有問題。在發佈版本的代碼中有一段不安全的內存訪問(具有優化和所有內容的代碼)似乎在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 2012-03-01 16:47:53
嘗試打印obj的值。即cout << obj。 – akhisp 2012-03-01 16:49:25