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