|||
编程还得注意Debug和Release的区别
Captain Dialog 2009-06-13
1 问题描述
最近在自己机子上调试好的程序给别人用的时候发现居然是运行不了,手上出现了两个很奇怪的错误(我以前没有见过的错误):(1) 一个自定义控件问题,在我机子上运行时完全没有问题,在同学机子上也没有问题,但是在老师的机子上运行时就出现了程序无法加载的情况(他的操作系统是原版英文系统,呵呵,我们的都是中文的盗版系统);(2)一个用FORTRAN编写的DLL库文件,在我这里运行也是可以的,没有问题,结果在同学和老师的机上都运行不了。
2 错误调试解决
针对情况(1):用Dependance Walker查看DLL文件得到的结果是有个叫DWMPI的DLL库文件无法加载,起初我怀疑是不是系统的问题,后来重新装载库文件仍旧失败,进一步在老师机上运行源代码后发现:是自己的控件在初始化定义的时候没有能够制定初始化的问题,因此可以产生NULL对象的操作,从而导致失败。修改增加了重载的构造函数后解决了问题。
?但是,为什么在我得机子上可以运行通过?
针对情况(2):
如上图所示,发现少了两个库文件,结果加载后运行成功。
3 调错讨论
为什么会是这样的结果?在自己的机子上运行的程序会出现不兼容的问题?后来在网上大概查了一下,可能是我所有的编程环境都是在Debug模式下进行的吧,包括DLL库文件。了解到Debug调试的时候会自动的校正许多的关于变量未有初始化等问题,然后在Release模式下就会出现不兼容的情况了。
以后编程序还是用Release比较放心啊。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 12:50
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社