PDB是什么文件?PDB文件格式详解
发布时间:2023-08-13 08:28:18
PDB是什么文件?一些用户在操作电脑的时候,可能会碰到后缀名为.pdb的文件,该文件是程序数据库文件,相信很多用户对于PDB文件都不了解,下面小编将给大家科普下PDB文件知识,请大家耐心阅读下文。
一、PDB文件的介绍
PDB(Program Data Base),意即程序的基本数据,是VS编译链接时生成的文件。PDB文件主要存储了VS调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、FPO(帧指针)、对应的行号等等。因为存储的是调试信息,所以一般情况下PDB文件是在Debug模式下才会生成。
二、PDB文件的调用过程
模块(Module),EXE和DLL都可以称之为模块,因为它们都有自已独立的Stack,所以我们在调试程序时,可以在Call Stack窗口查看到所有调用的Module Name。并且可以右键查看相应模块的ybmol Load Information,即该模块调用的PDB文件路径的过程。
每个模块被载入的时候,其相同名字的PDB文件同时被载入。所以Debug模式下,不仅因为代码没有优化,同时因为要载入PDB文件,所以Debug模式下的程序执行速度非常慢。
每个模块只会生成一个相同名字的PDB文件,并且模块生成的同时,会校验PDB文件生成GUID记录在模块内。这是因为调试时,调试器强制要求每个模块必须和PDB文件保持一致。实验过程中,用之前生成的PDB文件替换当前生成的PDB文件时,Debug窗口会显示No symbols loaded. MSDN也做了相应的说明:The debugger will load only a PDB for a binary that exactly matches the PDB that was created when the binary was built.
PDB文件中记录了源文件路径的相关信息,所以在载入PDB文件的时候,就可以将相关调试信息与源码对应。这样可以可视化的实时查看调试时的函数调用、变量值等相关信息。模块当中记录的PDB文件是绝对路径。所以只要模块在当前电脑上载入,调试器自然地会根据模块当中的路径信息找到相应PDB文件并载入。同样PDB文件中记录的源文件路径也是绝对路径,所以PDB文件只要在当前电脑上载入,调试进入相应模块时,都能够匹配到记录的源文件,然后可视化地查看相应信息。
如果源文件找不到,那么依然能够查看调试信息,只是这个时候只能查看汇编代码,不能通过源文件可视化查看信息。一般情况下,绝大多数C++程序员不具备阅读汇编代码的能力。所以完全通过PDB文件调试,意义与作用均没有多大。如果要让其他人能够调试自已的代码,PDB文件和源码都应该提供,只提供PDB文件的意义不大。如果确实有类似的需求,可以保留相应生成的PDB文件。微软的很多库默认是不提供PDB文件的,但是近来微软逐渐开放了一些库的PDB文件。
三、VS搜索PDB文件的路径顺序
MSDN中详细的讲述:
1、The Visual Studio debugger uses the path to the PDB in the EXE or DLL file to find the project.PDB file.
2、 If the debugger cannot find the PDB file at that location or if the path is invalid (for example, if the project was moved to another computer), the debugger searches the path containing the EXE.
3、 the symbol paths specified in the Options dialog box (Debugging folder, Symbols node)。
1是默认当前路径,2是编译链接时记录在模块当中的路径。现在重点说3,即设置符号文件路径。
1)通过Options-》Debuggin-》Symbols或在Call Stack窗口右键找到Symbol Settings打开下面的窗口。
2)小编将PDF的生成路径调整到D:\,调试时将PFB文件剪切到D:\Other目录。
3)然后调试进入dll模块时,右键在Call Stack对应的Module上选择查看Symbol Load Information.
4)通过上图即可以看到VS加载PDB文件的顺序,这与MSDN中介绍的是一样的。
5)Symbol Settings窗口里,还可以从服务器上缓存符号文件,可是小编试了很多方式,均没有成功。
为什么讲这个设置符号文件呢?因为有时候,有些项目非常庞大,并且代码是共享的,所以代码会放到服务器上。很多很大PDB调试文件,如果拷贝到本地电脑上比较麻烦。这个时候,就可以指定网络路径,直接通过网络路径调试。
四、静态库的PDB文件
静态库也有自已的PDB文件,只不过其名字是VC80.PDB/VC100.PDB这样的名字。静态库的PDB文件会在链接时合并到EXE/DLL的PDB文件中去。如果生成的静态库lib里有记录相应的PDB文件,却又没有相应的PDB文件,那么静态库链接成EXE/DLL时就会报警告找不到静态库对应的PDB文件。所以如果静态库作第三方库发布时,可以不用生成PDB文件,这样调用者链接时就不会报警告。
关于PDB文件就给大家介绍到这里了,有兴趣的伙伴,可以好好看看小编整理的教程哦!


猜你喜欢
- 最近win10发布了ios镜像文件,今天就给大家分享windows系列的虚拟机怎么填加镜像,我们使用虚拟机做系统的时候,怎么把网上下载的io
- Excel2016怎么扩大表格可视区域?这篇文章主要介绍了Excel2016视图调整教程,需要的朋友可以参考下本文介绍Excel2016如何
- 最近有Win7系统用户反映,要删除文件的时候,突然发现右键菜单中没有删除选项,用户反复试了好几次,结果都一样,这让用户非常烦恼。那么,Win
- 大家知道,手机可以打电话、实用数据流量、连接WLAN ,那这三种信号的标志是什么样子?下面给大家总结一下。一、手机信号标志三条竖线,满格表示
- 在PPT的使用中,有时候需要做一些独立播放的内容,比如活动的开场,婚礼上的成长点滴之类的。这时候经常需要配上背景音乐。如何加音乐呢?用mov
- Win10电脑桌面图标怎么隐藏?最近有用户反映这个问题,桌面上有很多不需要的图标,一些用户看不习惯,那么怎么隐藏呢?针对这一问题,本篇带来了
- 系统之家U盘制作工具是系统之家打造的系统重装工具,下面小编介绍的是使用该软件将u盘制作成u盘启动盘的步骤,需要的小伙伴一起来看看吧。系统之家
- 做审阅工作一般会修改原文件中的内容,这时可以对修改过的地方添加批注。这就是Word中的修订功能,其主要是方便我们备注之前修过的内容。以下是小
- MAC用户们都喜欢使用iPhoto管理自己的照片,如果要用iPhoto查看照片的EXIF信息,该如何操作呢?关于这个问题,下面给予可行的解决
- Win10专业版系统是最常见的学习娱乐办公软件,使用频率非常高,近日有朋友在问,他的Win10专业版系统带上耳麦后说话对方听不到怎么回事呢?
- 最近一些win0的用户反馈说在使用电脑的过程中,总需要安装一些软件,可是有时候我们并不希望这些软件给他人使用,如何解决这种情况呢?今天小编将
- word是我们常用的办公软件,为了文字的美观,我们需要给文字加上一些边框,那么word2007中如何给文字添加边框?下面小编带来word自定
- 一些朋友发现自己使用Win10系统没有自动进行更新,打开Windows更新窗口后发现上面写着“你的组织已关闭自动更新”,这种情况下应该怎么办
- ppt怎么制作柳条生长的动画效果?ppt中想要制作一个柳条快速成长的动画,该怎么制作这个动画效果呢?下面我们就来看看详细的教程,需要的朋友可
- 使用win7系统时是否遇到过Appcrash错误?最近,有几位网友在询问小编Appcrash错误的解决方案。我们需要以不同的方式解决不同的错
- 我们在使用win10操作系统的时候,有的情况下可能需要我们去重新安装自己的操作系统。那么小伙伴们一定会想要给自己的电脑安装一个最合适的操作系
- 今天来说一个简单的扁平转场,效果如下,上面的案例实际是“个人介绍”的一个片段。可以看到,第一部分的内容是“我的名字是……”,第二部分的内容是
- 我们经常会写使用wps文字写文档,在我们写完或写的过程中,我们会怎么保存文档把文档保存在哪里呢?但是对于大多数人来说还是不太懂,接下来小编举
- 亲测有效,注意,修改注册表前建议提前备份1、(win)窗格键+R输入 :regedit ,打开注册表使用KMS激活office 2016后任
- 用户在编辑文件时少不了对办公软件的使用,办公软件的种类也有很多种,用户可以根据自己的需求来选择,在这些热门的办公软件中wps软件拥有了庞大的