PDB是什么文件?一些用户在操作电脑的时候,可能会碰到后缀名为.pdb的文件,该文件是程序数据库文件,相信很多用户对于PDB文件都不了解,下面小编将给大家科普下PDB文件知识,请大家耐心阅读下文。
一、PDB文件的介绍
PDB(Program DataBase),意即程序的基本数据,是VS编译链接时生成的文件。PDB文件主要存储了VS调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、FPO(帧指针)、对应的行号等等。因为存储的是调试信息,所以一般情况下PDB文件是在Debug模式下才会生成。
二、PDB文件的调用过程
模块(Module),EXE和DLL都可以称之为模块,因为它们都有自已独立的Stack,所以我们在调试程序时,可以在CallStack窗口查看到所有调用的Module Name。并且可以右键查看相应模块的ybmol LoadInformation,即该模块调用的PDB文件路径的过程。
每个模块被载入的时候,其相同名字的PDB文件同时被载入。所以Debug模式下,不仅因为代码没有优化,同时因为要载入PDB文件,所以Debug模式下的程序执行速度非常慢。
每个模块只会生成一个相同名字的PDB文件,并且模块生成的同时,会校验PDB文件生成GUID记录在模块内。这是因为调试时,调试器强制要求每个模块必须和PDB文件保持一致。实验过程中,用之前生成的PDB文件替换当前生成的PDB文件时,Debug窗口会显示Nosymbols loaded. MSDN也做了相应的说明:The debugger will load only a PDB for a binarythat 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 fileto find the project.PDB file.
2、 If the debugger cannot find the PDB file at that location or if the path isinvalid (for example, if the project was moved to another computer), thedebugger 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文件就给大家介绍到这里了,有兴趣的伙伴,可以好好看看小编整理的教程哦!
影音播放 43.7M
快播5.0精简版,是一款手机上的本地的播放器,几乎涵盖了所有的影音格式,安装后会自动扫描安卓设备内所有的视频、音频文件,播放超级流畅好用,给您极致的观看体验。
社交聊天 83.5 MB
蜜柚交友APP是一款聊天交友的社交软件,所有的用户都是经过个人实名认证,保证交友环境的真实性,让你放心的进行交友互动,会实时的进行定位,从而推荐附近的优质用户,让你们可以快速进行奔现约会,拉近你们之间的感
影音播放 3.29M
songzaapp是一款非常便捷的手机音乐播放器,在这你你可以搜索你想听的音乐,这款应用两个月时间在加拿大上线,70天的时间就获得了100万注册用户,成为一款按听歌场景创建播放列表的免费流媒体音乐产品,带给你不一样的音
影音播放 45.7M
奇米影视app是款好用的影视大全,快来选择不同的版块来进行体验吧,热门资源实时更新,点击播放来流畅运行,各种清晰度调整来提升画质体验,流畅播放没有广告更加便捷,快来感受一下!
出行购物 60 MB
益途app是为用户提供旅游产品信息的平台,你在这里可以获取许多的旅游产品内容,让许多有旅游需求的用户可以在这里发现感兴趣的旅游路线,然后就可以直接通过平台购买,让你做好相关的旅游规划,这样就可以让你的旅游
照片美化 34.7 MB
百变魔图软件是一款拍照美图类的手机app,多种功能一应俱全,你想到的这里都有!美颜相机、滤镜,照片美化、照片编辑,功能非常强大,爱美的小哥哥、小姐姐千万不要错过哦!感兴趣就来极光下载站下载这款百变魔图手机
照片美化 42.4M
Pexels手机版app是款好用的照片编辑软件,丰富的素材任你选择,用户可以本地导入你喜爱的图片来进行美化,丰富的软件功能满足不同的需求,一键搜索寻找你最喜爱的素材吧,感兴趣的小伙伴千万不要错过!
商务办公 53.8 MB
驾考驾照宝典是一款2019年最新的驾考宝典指南。在这款驾考驾照宝典软件中,用户可以通过软件内内置的超大题库进行科目一、科目四的学习与练习,还有科目二、科目三的详细教学视频。需要的用户就快来下载这款驾考驾照
生活服务 25.70 MB
百度浏览器2012年版本是一款老版经典版本的浏览器,结合百度官方为搜索功能提高了更全面的数据基础,用户可以在线上随时快速查找功能。登录账号后可与手机数据进行同步,便于管理下载和收藏栏目。百度浏览器2012版简介
商务办公 90.81M
一建准题库app专为一建考试打造的刷题app,丰富的考试真题给你治愈的练习,图文讲解,精彩视频让你深入体会,app的功能模式都非常的简单操作上手也非常的容易,有需要的用户就来下载试试吧!一建准题库app介绍2021年一级