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目录 。
推荐阅读
- 阴阳师式神强度排名2021 阴阳师式神强度2021最新
- 阴阳师红莲华冕活动怎么玩 阴阳师红莲华冕玩法奖励阵容攻略
- 阴阳师4月20日帝释天技能调整 阴阳师帝释天pvp转pve
- 一方出轨离婚时财产怎么分割
- win11把word放到桌面教程
- 阴阳师追月神典藏皮肤怎么样 阴阳师追月神睦月神祈皮肤特效
- 阴阳师魔神影鬼低配阵容 阴阳师魔神征伐源赖光双琴四兔打法
- 狗屁王是什么鼠标
- 制作折叠的个性签名效果