作者rf0914 (<-使用者代號)
看板EE_DSnP
標題[問題] ddd
時間Sat Nov 19 00:45:41 2011
想問一下這次的作業是不是沒辦法用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)
1F:→ djshen:大概是用到某個不能用的pointer? 11/19 00:52
2F:推 ric2k1:那 gdb 可以用嗎? (看看是什麼問題...) 11/19 00:58
3F:→ djshen:.a檔是不是沒辦法step 11/19 01:04
4F:→ rf0914:gdb也沒辦法step進去 11/19 01:13
5F:→ 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)