作者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)