作者dryman (dryman)
看板EE_DSnP
標題Re: [囧rz]BddTest連de 12小時的BUG...請小心bubble!
時間Sun Jan 17 19:58:37 2010
我也來騙P幣啦~~囧rz 我debug更久..20小時都在看xor 哭哭
勸同學們一定要把這篇還有上一篇看一看...
(1)
standardize把老師講義上面的好好做就行了
唯第三個bubble的部份要注意有沒有跟老師的完全一樣
swap可以寫個function來統一做,不然哪個腦包寫錯會gg
然後記得如果可交換,前面的要比較小,不然會發生非常奇妙的事情orz
: 5) 取cofactor的時候請記得要考慮bubble!這是我爬文爬到的!
: 真是太感謝當時出了跟我一模一樣問題的學長/姐!
: 如果你發現你的and or正確,可是xor一直爆
: 請參考看看bubble有沒有處理好...
雖然我cofactor也有寫錯,但我的ite死在更莫名的地方..
hash和cache...orz
cache..我做了很蠢的事,我把參數全部加在一起
結果他會把不一樣的computation當作同一個computation
這是我的程式世界奇妙物語-1
hash...我原本寫的東西有包含這一項:g>>2
可是最後兩個bit包了neg flag
o o
/ \x / \
a b a b
應該是不同的東西...
程式世界奇妙物語-2
最慘的是,我的gdb沒辦法在recursive function中正確的顯示參數值
(其他狀況都ok..就是recrusive不行 = =)
所以就只能cout大法
一步一步慢慢看,最後才發現其中兩個_nodeV值原本差1
最後卻被當作同樣的bddNode
這個bug超難 de出來的啦!!!(翻)
希望不要有人再犯>>2這種錯了..
: 6) 請不要跟我一樣腦包,把頭上有bubble當成要走相反路...
: 雖然在terminal的時候"走相反方向"跟"顛倒真假值"結果一樣...
: 就因為這個腦包我多de了快兩小時......orz
這點真的很重要,請不要寫錯..
寫錯的話xor會長這樣
[4](+) 0xa67f570 (1)
[3](+) 0xa67f550 (1)
[0](+) 0xa67f4d0 (17)
[2](+) 0xa67f530 (3)
[1](+) 0xa67f4e0 (3)
[0](+) 0xa67f4d0 (17) (*)
[0](-) 0xa67f4d0 (17) (*)
[0](-) 0xa67f4d0 (17) (*)
[3](+) 0xa67f560 (1)
[0](+) 0xa67f4d0 (17) (*)
[2](-) 0xa67f530 (3) (*)
: 最後...有沒有其實BddMgr::reset()裡面要先寫清空supports的八卦啊XD?
: 我一開始reset甚麼都沒寫
: 結果abcde的1/0跟BddNode::_one/_zero不一樣...= ="
reset真的要寫喔 啾咪~
XDDD
這篇只是想發洩gdb很難debug ite
還有提醒大家>>2這種東西很可怕...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.195
推 a3785lexx:我一開始hashkey也都>>2...(握) 01/17 20:03
→ a3785lexx:沒寫出來是因為覺得大概很少人跟我一樣無聊XD 01/17 20:03
推 master1x4:rightshift真是害死人啊..... 01/17 20:06
→ dryman:會這樣寫是因為爬精華區看到,還說這樣會比叫快,就這麼用 01/17 20:18
→ dryman:了...我猜一樓跟我一樣也是爬精華區才用的吧XD 01/17 20:18
→ dryman:>>花了我一整天 (昏倒) 01/17 20:18
推 a3785lexx:沒有,我純粹耍白癡以為後面兩位可以省掉沒關係XD 01/17 20:27
推 ric2k1:上一篇是? 01/17 20:34
→ dryman:上一篇是被我回文的文:) 01/17 21:12