我有很多的麻煩在C調試分割故障的XCode ++項目4矮人錯誤:無法找到DIE
我只得到一個段錯誤,當我用「LLVM 2.0」編譯器選項和使用內置-O3優化。據我瞭解,有一個時使用的優化有限的調試選項,但這裏是調試輸出我拿到後,我在Xcode中運行使用gdb開啓:
warning: Got an error handling event: "Dwarf Error: Cannot find DIE at 0x3be2 referenced from DIE at 0x11d [in module /Users/imran/Library/Developer/Xcode/DerivedData/cgo-hczcifktgscxjigfphieegbpxxsq/Build/Products/Debug/cgo]".
No memory available to program now: unsafe to call malloc
我不能讓gdb來給我之後的任何有用的信息(如跟蹤),但我不知道我真的知道如何正確使用它。當我嘗試使用「LLDB」調試器時Xcode剛剛崩潰(自從我開始使用它以來,這已經是一個常見的主題)。
我的程序是確定性的,但是當我嘗試用print語句隔離問題時,行爲會發生改變。例如,如果我在一點處添加cout << "hello";
,則段錯誤消失。其他打印語句會導致我的程序在其主循環的不同迭代中發生段錯誤。當然,當我輸入足夠的打印語句來查明有問題的代碼時,段錯誤似乎發生在一行之後但在下一行之前(即無處)。
我正在使用指針和動態內存分配,這可能是問題的原因,但由於我無法縮小導致錯誤的代碼塊,因此我不知道要在此處顯示哪些代碼。
我嘗試使用樂器中的「泄漏」工具進行分析,但沒有發現任何泄漏。
有什麼建議嗎?我對調試很缺乏經驗,所以任何事情都會有所幫助。
編輯:解決。考慮到某些輸入,我的程序會嘗試讀取數組的末尾。
感謝您的信息和鏈接到DieHard。我不認爲我有兩次釋放任何東西,但有很多地方我可以有一個晃來晃去的指針。我會嘗試更仔細地尋找這種類型的錯誤。 – Imran 2011-06-13 01:33:40