今天在鼓捣 Topomel Box 的时候,发现这么一个问题:工程启动调试后,VS会彻底无响应,时间会持续大概半分钟左右,然后才会开始正常的调试。 我是百思不得其解。 经过测试发现,其他DLL工程都可以正常调试,就是主程序工程有这个问题。说明问题出现在这个工程里。
因为调试是我经常需要用的,每次耽搁这么半分钟,那可太不方便了。叔可忍婶不可忍。 其他的工作项不得不先停一停,得专心研究这个问题。
继续研究,经过不断试错,终于有了些眉目。
解决方法
有如下两个思路可以解决上述问题。 1) 调试断点下在头文件里定义的静态函数体中,会导致此问题。所以,定义静态函数还是需要谨慎的。 绕开方法就比较简单,将函数实现移动到CPP文件里,头文件只声明下函数原型即可。
2) 将Visual Studio 的调试选项中的”要求和源码匹配”这个选项勾上,如下图所示:
>> 请移步至 topomel 查看图片 <<
此选项默认是勾选上的,我因为贪图方便就把它给关了。看来,一切事物都是有原因的。
我使用上述第一种方法,看起来都还挺正常,有待进一步观察。 看来,这往后 static 是不能随便用了。对事物缺乏足够的了解,就贸然使用,我已尝到苦果子了。
总结
首先,对于大型工程,每一步改动都需要小心谨慎。你需要记得,这个时候,你不是在写类似于 Hello World 之类的玩具程序了,得花费 120% 的精力把事情做好做细。 另外,提交代码的时候,最好能写一些注释,这样以后查看历史记录,也能弄明白当时的改动的具体细节信息。 最后,致年轻的自己:改动的步子,不要迈得太大,容易扯着蛋。
?
|