如果只提供一个用vc编写的.exe程序,其他的源代码都没有,可以用工具来判断该可执行程序是Debug版本的,还是Release版本的吗?
谢谢!

解决方案 »

  1.   

    看 它运行时调用的DLL文件, 如果是用MFC的,DEBUG版会调用MFC42D.DLL
    以及MSVCRTD.DLL.如果你看不到,你可以把这几个文件删除或改名,看程序运行是否会出错.
      

  2.   

    那Release版本的调用的是什么动态连接库?
      

  3.   

    如果我用Release版本来编译程序,ASSERT宏还会生效吗?
      

  4.   

    应该不会生效的。ASSERT只是Debug版本才有用的
      

  5.   

    很简单,VC带了一个小工具depends可以看出exe程序是否带有debug信息。"C:\Program Files\Microsoft Visual Studio\Common\Tools\DEPENDS.EXE"打开一个exe文件后,会列出这个exe自身和引用的所有dll代码的属性,其中一列是"debug",如果这个exe或者dll带有debug信息,这列等于Yes,否则NO。缺省状态下,Release版ASSERT被定义为一个空的宏,不产生任何代码。
      

  6.   

    很奇怪,我编了一个比较大的项目,分别有两个版本Debug版本和Release版本,我用你说的Dependency工具查看了一下,两个版本的Debug列显示的都是yes,很奇怪!而我在做了一个最简单的测试程序(vc缺省的程序),也分别编成了Debug和release版本,这下在release版本下debug列显示的是No,不知道这是什么原因,是Dependency有问题嘛?
    谢谢!
      

  7.   

    可能你的工程设置比较特别,让release版也带有调试信息。有些设置能够让release版程序带有调试信息,可以允许ASSERT,好像还可以跟踪。msdn好像有文章介绍这种方法。我有一个10万行代码的项目,release版就没有调试信息。
      

  8.   

    检查你的编译设置,DEBUG和RELEASE是由编译参数来决定的