作者a3785lexx (Alex)
看板EE_DSnP
标题[囧rz]BddTest连de 12小时的BUG...请小心bubble!
时间Sun Jan 3 17:22:18 2010
囧rz....我又来骗批币啦~~
断断续续的de了12个小时的BUG(6+6)
终於可以把BddTest的output给作出来跟ref一样了...orz
我的一点小心得是:请小心bubble......
其实这12小时里面de出来不只一种bug...还蛮五花八门的
光我还记得的就有:
1) swap BddNode的时候脑包换错人了= =|||
2) 虽然有些情况需判断有没有swap的必要
但记得有些情况一定要swap(不小心该换的没换囧)
3) refCount操作前请务必确认目标是不是无辜的
(滥杀无辜会引来segmentation fault的天罚!)
4) operator ~() 的意思其实是operator ~(void)...
我以开始一直以为他是~(*this)()这样用......
被楼上的operator()误导了@@"
5) 取cofactor的时候请记得要考虑bubble!这是我爬文爬到的!
真是太感谢当时出了跟我一模一样问题的学长/姐!
如果你发现你的and or正确,可是xor一直爆
请参考看看bubble有没有处理好...
6) 请不要跟我一样脑包,把头上有bubble当成要走相反路...
虽然在terminal的时候"走相反方向"跟"颠倒真假值"结果一样...
就因为这个脑包我多de了快两小时......orz
主要bug分布:
standarlize() > BddNode member functions >>>> others
尤其checkTerminal...真的就X4种情况,
请不要学我一直钻那边还改来改去的...
另外,如果hash/cache的test有过的话,就不太需要怀疑他们的正确性了
这是我今天又白花两三个小时去重验证得到的结果...
每次以为de出hash/cache的甚麽bug时,
最後都发现其实是自己test code写错了= ="
最後...有没有其实BddMgr::reset()里面要先写清空supports的八卦啊XD?
我一开始reset甚麽都没写
结果abcde的1/0跟BddNode::_one/_zero不一样...= ="
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.111.198
1F:推 ric2k1:辛苦了! 感谢分享! 01/03 19:08
2F:→ ric2k1:其实 xor OK 之後後面从 circuit 建 BDD 就没有什麽问题了! 01/03 19:15
3F:推 trancewu:我记得我当年一个==写成= de了两天的bug(菸~) 01/03 20:17
4F:推 slinh:泪推reset没写 debug找超久 01/06 16:49
5F:→ a3785lexx:特地来骗批币欧不是,来PO文就是希望大家不要重蹈覆辙:) 01/07 01:26
6F:推 ric2k1:看来攻略要 revise 一下... 01/07 01:26
7F:推 dryman:泪推reset.....下次攻略一定要加写reset啦(大哭) 01/16 19:52