我有很長的代碼,有多個進程,並在程序運行過程中的某個地方出現「無效的下一個大小(快速)」和一些沒有意義的數字。內存故障
我不能讓gdb單獨運行在這個過程中,我不知道在程序中發生了什麼。我把printf
的左邊和右邊(我用fflush
來沖洗它,所以它會在那時正好打印出來),但是當這種情況發生時,我仍然無法找到確切的線!
應該如何調試這樣的問題?我會很感激這個幫助,因爲我嘗試了所有我能想到的。
我有很長的代碼,有多個進程,並在程序運行過程中的某個地方出現「無效的下一個大小(快速)」和一些沒有意義的數字。內存故障
我不能讓gdb單獨運行在這個過程中,我不知道在程序中發生了什麼。我把printf
的左邊和右邊(我用fflush
來沖洗它,所以它會在那時正好打印出來),但是當這種情況發生時,我仍然無法找到確切的線!
應該如何調試這樣的問題?我會很感激這個幫助,因爲我嘗試了所有我能想到的。
首先試圖找到符合
grep -rni "invalid next" *.c
假設它是在一些子目錄中的所有C文件。那麼你應該看看這些數字是什麼意思(或糾正錯誤信息更有意義)。如果你沒有GNU的grep的:
find -name '*.c' | xargs grep -ni "invalid next"
這似乎是很多人,當他們正在使用的sizeof()函數分配的內存量錯了的東西有這個問題。
查閱這些線程:
http://www.gtkforums.com/viewtopic.php?t=4819
http://www.linuxquestions.org/questions/programming-9/free-invalid-next-size-fast-c-error-729852/