调试版本和发行版本

     Microsoft将应用程序的调试版本定义与符号调试信息,或与调试库一起建立的程序的一个版本。一个库的版本包括诊断帮助。并执行各种集成检查,以帮助调试一个程序。Microsoft将发行版本定义为程序的一个编译版本,其中不包括在调试模式中建立编译时所包含的调试和诊断特性。例如发行版本不包括ASSERT宏所包含的源代码。

1.缺省的调试版本建立与发行版本建立设置


     缺省调试和发行版的编译设置
     
建立版本缺省编译器设置
Win32 Debug这一选项一Microsoft格式,插入完整的符号调试信息,并
且不做任何优化。在这一阶段使用优化选项将使调试更困难
Win32 Release不包括任何符号调试信息。源代码以最快速度优化目标

2.为调试版本建立修改工程设置


     用户可以在Project Settings对话框(从Project菜单的Settings)的C/C++标签中的Debug Info选项修改工程设置,安全的Debug Biuld选项。
安全的Debug Build选项导致Debug Build
Program Database for Edit and Contiue产生一个附加输出文件称为程序数据库(.pdb).该文件包含程序的类型信息和符号调试信息。
Line Number Only修改.obj文件或可执行文件.exe的翻译。以使其只包含全局和外部符号以及行号信息(不包含符号调试信息)
C7 Compatible产生一个.obj文件和一个.exe文件,并带有调试器使用的行号和全部的符号调试信息
None不产生调试信息

     修改产生调试信息的格式


     以下配置藐视了配置Link为Microsoft Format(缺省)、COFF Format或者二者皆有:
  1. 从Project菜单中单击Settings,显示Project Settings对话框
  2. 单击Link标签
  3. 从Category下拉列表中选择Debug选项。
  4. 选择Microsoft Format(缺省)、COFF Format或Both Formats。
  5. 单击OK接受选择

     产生一个映射文件


     在调试一个应用程序时,特别是在当需要卸载出特定的内存时,有时映射文件将是非常有用。映射文件实际上是一个文本文件,其中包含了关于正在连接的程序的如下信息:
  • 该文件的模块名称或基名称
  • 该程序头文件的时间戳
  • 程序组列表,每个组以 segment:offset(段:偏移量)形式的起始地址,以及长度,组名和类的构成。
  • 公共符号列表,个地址均以segment:offset形式给出,包括符号的名字、浮动地址及定义符号的.obj文件
  • segment:offset形式的模块入口地址
     为打开映射文件的Debug选项,执行如下步骤:
  1. 从Project菜单中单击Settings。显示Project Settings对话框
  2. 选择Link标签
  3. 从Category中选择Debug标签
  4. 选择Generate mapfile复选框
  5. 为所生成的输出文件在Mapfile Name中选择名字,
  6. ok,接受选择

     重定向调试输入和输出

     
     Microsoft Visual C++允许重定向任何Win32 控制台应用程序的文件输入或者输出位置:
  1. 选择Project--> Settings选项
  2. 单击Debug标签
  3. 从Program Arguments文件框中指定一个或多个I/O重定向命令。
  4. OK,激活选项
     
命令动作
<filenamestdin从filename输入
>filenamestdout输出到filename
>>filename追加stdout到filename
2>>filenamestderr输出到filename
2>>filename追加stderr到filename
2>&1发送stderr(2)输出到与stdout(1)相同的位置
1>&2发送stdout(1)输出到stderr(2)相同的位置

3.什么是.pdb文件


     当Debugger打开Use Pragram Database选项时,则在建立程序时将产生一个附加文件,该文件中包含了调试和工程的状态信息,允许Visual Studio执行调试程序版本的增量连接。
     一般来说,VisualC++仅产生一个输出.pdb文件,然而,如果运行一个不是有Microsoft Visual C++创建的makefile,则将发现有两个.pdb文件,第一个文件为VCx0.pdb(x为当前VisualC++的版本),其中包含了所有正对独立的.obj文件的调试信息,第二个文件为projectname.pdb,其中包含了所有针对于Projectname.exe文件的调试信息。
     CVx0.pdb和projectname.pdb文件包着不同类型的信息,VCx0.pdb文件中所有关于程序类型的信息,但不包含任何符号信息,projectname.pdb文件是在连接阶段产生的,该文件包含了关于工程的.exe的文件调试信息,所有调试信息包含函数原型及其他信息,


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iot-genius

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值