windows关于程序release 加上调试信息 利用pdb dump定位的问题
来源:互联网 发布:淘宝店推广策划报告 编辑:程序博客网 时间:2024/06/03 19:36
本来release默认一般是删除所有的调试信息,然后编译时带有优化的参数,然后实现附带信息的减少,程序执行性能的提高。 但是可能你突然有想法需要在程序release版中加入信息,然后通过第三方库(crashrpt ,gppgle breakpad..)或者自己利用系统api去实现在用户使用的时候,能够在程序crash时,生成一个dump文件,然后上传给你,利用它来进行程序的调试,这样更方便找到问题。
当然不需要调试信息,你也可以通过其他的方法来获得错误的信息,代码的位置。但是这里讨论的是最方便的方法,就是拿到dump利用pdb然后用vs之类的进行调试马上就能定位到代码位置。
其实release debug差别的也就是一点点的选项,编译器的选项关于调试信息的贴一下官网的:
/Z7、/Zi、/ZI(调试信息格式):
编译器将程序数据库命名为 project.pdb。如果编译没有项目的文件,则编译器将创建名为 VCx0.pdb. 的数据库,其中x 是正在使用的 Visual C++ 的主版本。 编译器将 PDB 的名称嵌入每个使用此选项创建的 .obj 文件中,从而使调试器了解符号和行号信息的位置。 当使用此选项时,.obj 文件将较小,因为调试信息存储在 .pdb 文件中而不是 .obj 文件中。
如果从使用此选项编译的对象创建库,则在将库链接到程序时,关联 .pdb 文件必须可用。 因此,如果分发此库,就必须分发 PDB。
若要不使用 .pdb 文件创建包含调试信息的库,必须选择编译器的 C 7.0 兼容 (/Z7) 选项。如果使用预编译头选项,则预编译头和其他源代码的调试信息都放在 PDB 中。指定了“程序数据库”选项时将忽略 /Yd 选项。
然后就是链接器的选项了,链接器需要启用/DEBUG 还有 /PDB ,之前自己尝试,在编译选项里加上zi 之后,制定了pdb位置,然后如果同时存在优化选项o是无法定位到行的。然后重新是了一下在连接选项里 加入了/PDB , 这时候生成的pdb是和编译选项zi fd生成的不同的,这个却可以和优化选项同在,调试定位正常。后来查了一下。
http://msdn.microsoft.com/zh-cn/library/kwx19e36.aspx只有官方资料大概有提。 就是说到LINK时实际上是会把之前生成的pdb当成一个输入,然后更新后会有不同的pdb生成,但具体修改了什么,我还没弄清楚。不过暂时的问题是解决了的。其实也就这个有点小疑惑,其他的资料上都说的很清楚了。
- windows关于程序release 加上调试信息 利用pdb dump定位的问题
- vc++调试---利用PDB和dump文件定位问题并进行调试(VS2010)
- 调试release版本程序dump时出现的代码定位不准确问题
- 利用 dump 文件调试 release 程序
- VC++6.0编译release版本程序生成pdb调试信息
- release下程序崩溃问题的调试(windows)
- 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
- 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
- 定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
- 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
- VS2008调试Release程序--Dump文件方式
- VS2008调试Release程序--Dump文件方式
- VS2008调试Release程序--Dump文件方式
- 081105,产生release的PDB信息,MiniDumpWriteDump
- 关于VS2010的调试信息即.pdb文件
- 关于VS2010的调试信息即.pdb文件
- 关于VS2010的调试信息即.pdb文件
- 利用Core Dump调试程序
- Reward——前向星,拓扑排序
- HDU_1230 火星A+B
- 笔记
- 【算法小总结】广度优先搜索剖析
- 使用Java的Introspector类操作JavaBean的属性
- windows关于程序release 加上调试信息 利用pdb dump定位的问题
- JAVA垃圾回收机制
- hibernate中的inverse和cascade
- hdu-oj 2003 求绝对值
- MyEclipse调试总结
- hdu 2068
- mysql存储过程详解
- hdu-oj 2004 成绩转换
- 一个经典算法的解法,觉得挺有意思