我的項目中有一個嚴重的錯誤。當我使用gdb來打開它爲我喜歡的東西。核心的(我並沒有把所有的GDB輸出爲了便於閱讀):在gdb中找到哪個函數導致「地址越界」
這是代碼::
非常非常可疑,新寫的部分0x00000000004579fe in http_chunk_count_loop
(f=0x82e68dbf0, pl=0x817606e8a Address 0x817606e8a out of bounds)
這是該工作了很長一段時間沒有問題::
0x000000000045c8a5 in packet_handler_http
(f=0x82e68dbf0, pl=0x817606e8a Address 0x817606e8a out of bounds)
OK現在什麼弄亂我的頭腦是pl=0x817606e8a Address 0x817606e8a out of bounds
代碼非常成熟的部分,GDB顯示它已經出界則達到了新的前書面代碼。這讓我想到由功能引起的問題,它調用packet_handler_http
。
但是packet_handler_http
非常成熟,工作很長一段時間沒有問題。這讓我誤會了gdb輸出。
問題是與packet_handler_http
我猜,但由於這是已經工作的代碼我很困惑,我正確的我的猜測還是我錯過了什麼?
工作代碼並不意味着正確的代碼。 – alk
它可能是一個參數,就像ex的緩衝區指針,它被傳遞到導致錯誤的這些函數中。如果'packet_handler_http'成熟了,那麼打破它的可能是一個無效的輸入?很難說沒有更多的代碼訪問... – Jimbo
我想分享代碼,但項目很大,它不可讀。我很好奇,如果它在推出的代碼中表示「超出界限」,因爲gdb在暗戀那一刻獲取了內存的快照,或者那時它真的「超出界限」。 –