PDB文件格式详解 PDB是什么文件?
来源:嘿猪猪手游网 作者:佚名 时间:2023-08-09 18:25:10
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文件就给大家介绍到这里了,有兴趣的伙伴,可以好好看看小编整理的教程哦!
以上就是PDB是什么文件?PDB文件格式详解的全部内容了,文章来源于网络,版权归原作者所有,如有侵犯您的权利或文章有问题,请联系我们。更多相关pdb文件的内容,请关注收藏嘿猪猪网。
相关阅读
- 谷歌浏览器打开是2345网址导航怎么办?
- Epic收不到验证码怎么办 Epic账号注册收不到验证码解决办法
- Win10提示“若要升级windows server或企业版请联系管理员”怎么办?
- irql_not_less_or_equal解决方法(电脑蓝屏提示错误代码driver)
- mx450显卡驱动更新的两种方法 mx450怎么更新驱动?
- 爱思助手查看设备信息教程 爱思助手怎么查看设备信息?
- 彻底关闭360弹窗广告方法(亲测有效) 360广告弹窗怎么关闭?
- tessafe.sys文件错误解决方法 tessafe.sys能不能删除?
- Win7提示不是正版怎么解决? Win7系统不是正版有什么影响?
- MathType下载后打不开的解决方法 MathType安装了怎么用不了?
更多资讯
-
一键重装Win7的方法 如何重装Win7系统?
-
快手小店网页登录地址分享(快手小店网页版入口)
-
3D播播设置3D模式的方法 3D播播怎么设置3D模式?
-
五种显卡超频方法随你挑! 显卡怎么超频?
-
nrg是什么文件? nrg文件如何打开?
-
笔记本开机黑屏的解决方法 笔记本电脑开机黑屏没反应怎么办?
-
超星网络学生登录入口地址分享(超星学习通网页版入口)
-
2022支付宝集五福必得敬业福方法 2022怎么必得敬业福?
-
剪映电脑版添加字幕和配音的方法教程 剪映如何加字幕和配音?
-
哪些手机可以刷公交卡? 什么手机支持NFC技术?
-
Win10屏保密码设置方法 Win10屏保密码如何设置?
-
设置Word首页不要页眉方法教程 Word第一页不要页眉怎么设置?
热门文章
热门手游
换一换- 精品游戏
- 最热榜单
- 实况足球九游渠道服v7.7.0 安卓版(实况足球9下载)_实况足球九游版官方下载 v7.7.0 安卓版
- 绝地求生刺激战场亚服手游(PUBG MOBILE)v2.8.0 安卓版(刺激战场亚服下载)_绝地求生刺激战场亚服中文版下载 v2.8.0 安卓版
- 原始传奇甄子丹服客户端v1.8.521 安卓版(甄子丹代言的游戏)_原始传奇甄子丹代言版下载 v1.8.521 安卓版
- 蜀门手游正版下载v2.43 安卓版(下载蜀门手游)_蜀门手游正版客户端官方下载 v2.43 安卓版
- 大话西游手游360版v1.1.418 安卓版(大话西游客户端)_大话西游手游360版本客户端下载 v1.1.418 安卓版
- 原神国际服4.0版本v4.0.0 安卓版(安卓4.0游戏下载)_原神国际服4.0版本下载安装官方最新版2023 v4.0.0 安卓版
- 全民追击v1.0.0 地铁版(魔神坛斗士游戏)_全民追击下载 v1.0.0 地铁版
- 造梦西游外传2腾讯版v1.0.0 最新版(西游外传2)_造梦西游外传2腾讯qq微信版下载 v1.0.0 最新版
- 三国志战略版3D灵犀版v2045.1053 安卓版(三国可以插的3D游戏)_三国志战略版3D灵犀官方下载 v2045.1053 安卓版
- 植物大战僵尸疯狂版v4.2 最新版(植物大战僵尸疯狂版)_植物大战僵尸疯狂版下载安装 v4.2 最新版
- 明星三缺一v2.0(明星三缺一)_明星三缺一国际板2015 v2.0
- 球球大作战官方正版游戏v18.0.0 安卓版(球球)_球球大作战下载最新版 v18.0.0 安卓版
- 台球帝国qq登录版v5.89031 安卓版(QQ台球)_台球帝国qq登陆版本下载 v5.89031 安卓版
- 末日血战手游v1.11.101.2 安卓版(末日血战)_末日血战官方版下载 v1.11.101.2 安卓版
- 斗罗大陆史莱克学院v0.2.1640 最新版(斗罗大陆史莱克学院手游下载)_斗罗大陆史莱克学院手游下载安装 v0.2.1640 最新版
- 逃生手机版(OutlastMobile)v1.0 最新版(逃生下载)_逃生手机版下载中文版免费 v1.0 最新版
- 摇曳露营中文版(相約露營)v1.10.482 安卓版(摇曳露营)_摇曳露营中文版下载最新版2023 v1.10.482 安卓版
- 勇者使命全面反击国际服v1.8.0 最新版(勇者使命)_勇者使命全面反击游戏中文版本下载 v1.8.0 最新版
- 身高模拟器手机版(HikakuSitatter)vv1.4.5 最新版(HIKAKU_SITATTER身高软件)_身高模拟器手机版下载 vv1.4.5 最新版
- 巅峰坦克腾讯版v4.1.1 安卓版(qq4.1.1)_巅峰坦克手游腾讯qq微信登陆版下载 v4.1.1 安卓版
- 开心餐厅极速版v1.0.4 正版(开心餐厅)_开心餐厅极速版下载安装 v1.0.4 正版
- Minecraft我的世界基岩版正版免费下载v1.20.0.24 安卓国际版(我的世界手机版下载)_我的世界基岩版下载手机版最新版 v1.20.0.24 安卓国际版
- 锈湖根源中文版(锈湖追溯)v3.1.4 官方正版(锈湖根源)_锈湖根源中文版免费下载安装最新版 v3.1.4 官方正版
- 弯道赛车漂移v1.0.5 安卓版(弯道赛车)_弯道赛车漂移最新版下载 v1.0.5 安卓版
- 猎手之王网易版v1.1.6 官方正版(猎之王app)_猎手之王网易版手游下载 v1.1.6 官方正版
- 十二之天贰v0.1 经典版(十二之天贰)_十二之天贰手游下载 v0.1 经典版
- 金庸群侠传3手机无敌版v1.0.2 破解版(金庸群侠传3无敌版)_金庸群侠传3安卓无敌版本下载 v1.0.2 破解版
- 造梦西游4试玩版v2.1.7 安卓版(造梦西游4试玩版)_造梦西游4手游试玩版下载 v2.1.7 安卓版
- findoutv1.2.5 安卓版(find out)_findout游戏中文版下载 v1.2.5 安卓版
- 沙雕模拟器非礼勿视模组(Dude Theft Wars)v0.9.0.7f 安卓版(非礼勿视下载)_沙雕模拟器非礼勿视模组下载 v0.9.0.7f 安卓版
- 本类周排行
- 本类总排行