当你运行一段代码、一个软件,在运行时你发现:debug下正常, release下f5运行也正常,唯独release编绎后单独运行异常,你会怎么想?
这个问题对我而言,脑海里不曾有过,于是蛋定思蛋,先百度了一下:发现网上信息并不多,偶尔几条也是vc++的,对于c#的,绝无仅无。

当我把代码发给一友人,让他也帮忙试下时,发现对方的win7 64位竟然运行正常,灵异性又提升了一个等级。
面对这神一般的灵异bug,我费了n个小时折腾,找一个不能调试的bug,因为f5下都是正常的,那个辛苦啊。
灵异现象已经说了,那灵异点是什么呢?标题已经出卖了这个问题,和aop的realproxy有关。
光说aop,园子里懂的人不多,用的估计也不多,所以深入无谓,浅出又难,只好简单过过场。
我是怎么发现问题是在aop realproxy?
这个使用常规方法,在代码段里插一些弹出信息,来缩小出错的代码片断,最终找到了它。
为了减少废话,这里直接讲述两点:
1:哪些代码有问题,哪里有问题?
这里给出详细的错误代码,和注释错误点,代码通常都有点长,不容易看:
view code
通常大量的代码测试及分析方法,我发现了,只要aop对象涉及到内部成员变量,在release编绎后运行就一定会报错。
2:如何解决。
在历经各种无解后,我发现了,realproxy还有另一种写法,而这另一种写法,竟然可以解决这个问题,代码如下:
3:debug和release还有f5,究竟隐藏怎样的秘密?
我也不懂,这涉及更底层的问题,不在我深究的范围内,懂的人士可以留言给大伙解答下。
总结:
在编程的世界里,灵异总是无处不在的,但是找它灵异的原因,并且能找到一种解决这类事件的方法,是每个代码建造师必须具有能力。
至于为何会产生这样那样的灵异事件,在研究的范围内,可以追究原因,在非自身研究的领域,大伙看着办了。