看板 EE_DSnP 關於我們 聯絡資訊
囧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
ric2k1:辛苦了! 感謝分享! 01/03 19:08
ric2k1:其實 xor OK 之後後面從 circuit 建 BDD 就沒有什麼問題了! 01/03 19:15
trancewu:我記得我當年一個==寫成= de了兩天的bug(菸~) 01/03 20:17
slinh:淚推reset沒寫 debug找超久 01/06 16:49
a3785lexx:特地來騙批幣歐不是,來PO文就是希望大家不要重蹈覆轍:) 01/07 01:26
ric2k1:看來攻略要 revise 一下... 01/07 01:26
dryman:淚推reset.....下次攻略一定要加寫reset啦(大哭) 01/16 19:52