pdb文件是什么?关于pdb文件的一些介绍
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文件就给大家介绍到这里了,有兴趣的伙伴,可以好好看看小编整理的教程哦!
win7磁盘碎片整理的时候进度一直卡住不动怎么办
这篇文章主要介绍了Win7磁盘碎片整理一直停在0%的解决方法,解决这个问题的方法很简单,在整理前先运行一下磁盘清理程序即可,需要的朋友可以参考下
详情2018-01-15 13:29:29责编:dj 来源:驱动管家cmos是什么意思你知道吗?关于BIOS和CMOS的一些介绍
BIOS和CMOS是什么?相信很多伙伴都见过它们,却不知道BIOS和CMOS具体是指什么吧?简单的说,BIOS是个存储在一个芯片中的程序,而CMOS是个随机存储器RAM,相信很多伙伴还是云里雾里的,下面小编就来浅谈下BIOS和CMOS,让大家更好的认知BIOS和CMOS。
详情2018-01-02 17:04:16责编:dj 来源:驱动管家在XP系统下要设置计划任务的方法是什么
相信大部分人都了解WinXP系统的计划任务,电脑中的计划任务可以帮助用户做很多事情,定时关机,磁盘整理,杀毒等,非常的方便,但还是有部分人并不了解计划任务,也不知道如何设置计划任务。
详情2018-01-10 10:48:47责编:dj 来源:驱动管家在使用u盘的时候提示u盘文件或目录损坏且无法读取怎么解决
不少朋友在使用U盘的时候喜欢热插热拔,虽说Windows系统支持热插热拔,但还是很容易导致出现提示“U盘文件或目录损坏且无法读 薄U馐焙騏盘里的所有内容都将无法打开,也无法进行操作,会不会让你陷入绝望呢?不必着急,下面这套简单可行的解决措施一定能帮
详情2018-01-18 16:06:19责编:dj 来源:驱动管家win10开机密码取消的两个常用方法介绍
最近有不少网友反馈Win10开机密码取消不掉的问题,但小编亲测,只要简单几步设置,就可以轻松的取消开机密码。小编认为,很多朋友遇到Win10开机密码取消不掉,多数是由于没有正确的设置导致的,下面小编分享2种亲
详情2018-01-16 08:54:53责编:dj 来源:驱动管家玩英雄联盟的时候fps低的原因是什么?英雄联盟fps低怎么办
最近有不少的windows10系统用户反映,使用Windows 10 周年更新版操作系统在玩LOL的时候FPS值特别低,都在60以下,这是怎么回事?经过测试小编发现这是由于系统中的UWP应用Xbox导致的,这该怎么解决?本文将提供win10系统玩英雄联盟fps低的解决方法图文教程
详情2018-01-02 17:04:25责编:dj 来源:驱动管家关于计算机的注册表命令大全汇总
本文主要介绍了常用的118条注册表命令,朋友们参考一下 很实用的哦
详情2018-01-02 16:45:41责编:dj 来源:驱动管家设置无线路由器的中文名应该如何设置
Win7系统怎么设置无线路由器的WiFi中文名?怎么设置一个有个性又好记的WiFi中文名呢?既然是要设置WiFi名字,那么我们何不把WiFi设置成中文的呢?如何更改,详看下文
详情2018-01-14 19:42:47责编:dj 来源:驱动管家怎么查看隐藏文件?win10查看隐藏文件的方法
Win10系统怎么查看隐藏文件?下面脚本之家小编就给大家带来Win10查看隐藏文件的方法,一起来看看吧
详情2018-01-22 10:56:18责编:dj 来源:驱动管家电脑在开机的时候提示press f9 to start onekey ghost是怎么回事?
最近有win10系统用户反映,电脑每次开机的时候,都会显示“pressto start onekey ghost timeout:2 倒计时,该问题是由于电脑使用备份软件中设置的快捷键导致的,该怎么办呢?本文将提供Win10系统提示press f9 to start onekey ghost的原因及两种解决方法供大家了解
详情2018-01-15 17:28:11责编:dj 来源:驱动管家
- 小米2s后盖怎么打开?小米2s打开手机后盖的方法
- 苹果手机怎么上网?苹果手机连接后上不了网怎么办?
- 为什么电脑桌面图标有蓝色阴影怎么去掉?桌面图标蓝底阴影怎么去?
- 360随身wifi 2代好用吗?360随身wifi使用方法教程
- kindeditor漏洞描述 kindeditor上传解析漏洞
- 麦咖啡企业版8.8设置规则要包含哪些进程?排除哪些进程?
- 手心输入法评价如何?手心输入法功能有哪些?
- usb3.0接口无法识别U盘怎么办?USB3.0无法识别U盘解决办法
- 联想g50笔记本的键盘能不能更换
- 电脑的系统检测不到sata硬盘有什么办法解决
- 文件的后缀名为caj文件怎么打开?caj文件打开方法
- 不知道c盘哪些文件可以删除?三种方法帮你清理你的c盘
- 手机进水怎么办?做这五步或许还能抢救下手机
- iphone5电源键失灵怎么更换?iphone5电源键更换图解
- 电脑为什么无法识别usb设备?无法识别usb设备怎么办?
- 打印机墨盒加墨怎么操作?打印机墨盒加墨的方法
- 什么是暴力破解软件?暴力破解的软件分哪些类型?
- 开源软件中有哪些容易被忽略的安全漏洞?
- 为什么格式工厂合并视频失败了?格式工厂转换视频失败怎么办?
- 怎样设置来保障无线网络安全问题?无线网络有哪些安全设置?