作者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
1F:推 a3785lexx:我一开始hashkey也都>>2...(握) 01/17 20:03
2F:→ a3785lexx:没写出来是因为觉得大概很少人跟我一样无聊XD 01/17 20:03
3F:推 master1x4:rightshift真是害死人啊..... 01/17 20:06
4F:→ dryman:会这样写是因为爬看到,还说这样会比叫快,就这麽用 01/17 20:18
5F:→ dryman:了...我猜一楼跟我一样也是爬才用的吧XD 01/17 20:18
6F:→ dryman:>>花了我一整天 (昏倒) 01/17 20:18
7F:推 a3785lexx:没有,我纯粹耍白痴以为後面两位可以省掉没关系XD 01/17 20:27
8F:推 ric2k1:上一篇是? 01/17 20:34
9F:→ dryman:上一篇是被我回文的文:) 01/17 21:12