看板 EE_DSnP 關於我們 聯絡資訊
想問一下這次的作業是不是沒辦法用ddd阿?? 開了之後他完全不讓我step到更裡面一層去看... 然後我理論上都寫好了可是現在程式會在mtd -a之後的mtp crash掉 然後確定是當在MemMgr::print()呼叫到numElm()的時候... 但從 make debug 模式下看明明就都很正常的在運作 QQ 花了一整個晚上了連問題的癥結在哪都找不到 QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.243.229 ※ 編輯: rf0914 來自: 140.112.243.229 (11/19 00:48)
djshen:大概是用到某個不能用的pointer? 11/19 00:52
ric2k1:那 gdb 可以用嗎? (看看是什麼問題...) 11/19 00:58
djshen:.a檔是不是沒辦法step 11/19 01:04
rf0914:gdb也沒辦法step進去 11/19 01:13
rf0914:噢然後只是mtn或mtd沒有-a的話就都完全正常... 11/19 01:17
終於找到BUG了 原來在 void pushFront(T* p){...} 裡面 如果p傳入的是指向陣列的指標 那這個指標上所指到的位置的值剛好就是系統偷存陣列長度的地方 所以在pushFront的時候如果沒有設成0 在numElm()裡面地回到最後就會指到類似0x1之類的地方然後就crash掉了~ 花至少五個小時才修好 QQ ※ 編輯: rf0914 來自: 140.112.243.229 (11/19 02:29)