Dav*_*vid 63 c++ visual-studio-2010 visual-studio
在VS2010中,有一个选项可以在链接器下为exes/dll生成调试信息,但在库的librarian下没有这样的选项.调试信息是否嵌入在静态库中?
libs,exes和dll的程序库文件名的C/C++属性中有一个选项.默认情况下,它进入我的中间目录,并命名为libs的项目名称,但名为vc $(PlatformToolsetVersion).pdb for exes/dlls.这个选项的pdb是什么,它与链接器选项中的pdb有什么不同?
如果我提供带有库和头文件的库,如何向库的用户提供调试符号?
小智 51
如果使用/ZI
或/Zi
(C/C++
- > General
- > Debug Information Format
),则会vc$(PlatformToolsetVersion).pdb
创建,其中包含所有已.obj
创建文件的调试信息.如果您交替使用/Z7
,调试信息将嵌入到.obj
文件中,然后嵌入到.lib
.这可能是分发静态库调试信息的最简单方法.
但是,我不建议分发静态库,因为它通常与编译器的特定版本相关联.
bun*_*ive 36
对于那些需要完整操作方法的人(VS 2013),扩展了之前的答案.
请注意,这应该解决上面关于VS2013问题的注释^^.
方法1:程序数据库(.pdb)方式(/ Zi或/ ZI)
Static Lib Project:生成一个与静态lib同名的pdb:
Solution Explorer
从View
菜单打开.Properties
Configuration Properties
- > C/C++
- > General
- > Debug Information
到/Zi
或/ZI
/ZI
允许在调试期间编辑"编辑并继续"Configuration Properties
- > C/C++
- > Output Files
- > Program Database File Name
到$(OutDir)$(TargetName).pdb
应用程序项目:将您的可执行文件与静态库和新的PDB文件链接:
Debug Information
根据需要编辑属性.Configuration Properties
- > Linker
- > General
- > Additional Library Directories
,添加自己的"libs"目录,或者您计划保存/复制YourLib.lib和YourLib.pdb文件的任何目录.Configuration Properties
- > Linker
- > Input
- > Additional Dependencies
,添加YourLib.lib
(前面没有路径)方法2:嵌入式符号(无.pdb)方式(/ Z7)
Static Lib Project:生成带有嵌入式调试符号的静态库
Debug Information
,但这次是/Z7
应用程序项目:将可执行文件与静态库链接
Debug Information
根据需要修改属性Additional Library Directories
Additional Dependencies
Additional Library Directories
讨论:
Debug Information
应用程序项目的设置?这篇文章关注如何在静态lib代码中进行调试.相同的"方法1与方法2"选项也适用于应用程序项目.静态库在使用它们的程序中实现.
如果使用它们的程序使用调试符号,则该程序中编译的库代码也将具有符号.
来自维基百科的PDB信息:
当调试符号嵌入到二进制文件本身中时,文件可以显着增大(有时会增加几兆字节).为了避免这种额外的大小,现代编译器和早期的大型机调试系统将符号信息输出到一个单独的文件中; 对于Microsoft编译器,此文件称为PDB文件.
归档时间: |
|
查看次数: |
49644 次 |
最近记录: |