VC6调试

你可能遇到下面情况,程序开发和调试都在Debug下进行,当最后发布的时候却发现,Release版本下编译通不过,或者运行时出错,而在Debug版本下无任何问题。特别是在工程很大很复杂时,这种情况时有发生。这时你可能后悔莫及当初为啥不直接在Release版本下开发和调试呢?确实如此,我们完全可以狠心的抛弃Debug版本。把自己的灵魂和肉体全部交给Release版本,既然如此我们如何做呢,黑简单!Debug 和 Release 并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。事实上,我们甚至可以修改这些选项,从而得到优化过的调试版本或是带跟踪语句的发布版本。记住,Release版本由于代码优化,有些变量是观察不到的,行的运行顺序可能也会不同。
  1. VC6.0 Release 版本下调试运行设置
    1. project->Settings   选择release版本
    2. c/c++选项卡设置:category:General, Optimizations:Disable(Debug),Debug info: program database,
    3. Link选项卡设置如下:Category选 Debug,选中Debug info 复选框和Microsoft format。

  2. C运行时库设置
    1. 在昨日的项目中,更新了其他人的Source与Project文件之后,程序运行总是抛出异常。跟踪调试的结果是一处内存释放引起的异常,但是明显感觉这不是导致问题的真正原因。所以在项目配置方面进行了比较,发现新更新的项目使用Debug MultithreadDLL选项,而其他相关项目使用DebugMultithread选项,他们不能够混合使用?修改成Debug Multithread就没有问题了。
      C运行时库除了给我们提供必要的库函数调用(如memcpy、printf、malloc等)之外,它提供的另一个最重要的功能是为应用程序添加启动函数。C运行时库启动函数的主要功能为进行程序的初始化,对全局变量进行赋初值,加载用户程序的入口函数。Visual C++提供的多线程运行时库又分为静态链接库和动态链接库两类,而每一类运行时库又可再分为debug版和release版,因此Visual C++共提供了6个运行时库。如下表:

      C运行时库

      库文件

      Single thread(static link)

      libc.lib

      Debug single thread(static link)

      libcd.lib

      MultiThread(static link)

      libcmt.lib

      Debug multiThread(static link)

      libcmtd.lib

      MultiThread(dynamic link)

      msvert.lib

      Debug multiThread(dynamic link)

      msvertd.lib




参见

  1. Debug和Release区别

  2. VC++中的C运行时库浅析

  3. VC++中debug跟release编译模式的区别总结