码迷,mamicode.com
首页 > 数据库 > 详细

让Visual Studio载入Symbol(pdb)文件

时间:2017-08-30 10:05:08      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:search   csdn   相对   from   ram   速度   crt   box   nbsp   

让Visual Studio载入Symbol(pdb)文件

 

 

Visual Studio载入Symbolpdb)文件

 

 

 

在VC编译工程的编译连接阶段,会产生Symbol文件,也就是常说的 pdb 文件。pdb 的全称为 program database,在 MSDN 中的解释为,pdb 文件是一个在编译和链接阶段产生的,包含了类型和调试符号信息的二进制文件。pdb 文件中包含了各个函数的符号表,也是进行 WinDbg 调试必不可少的文件。

 

既然 pdb 文件是给调试器使用的,那么 Visual Studio 调试器也就可以使用之。通过如下设置,Visual Studio 便可以在调试过程中加载 pdb 文件了。

 

Tools --> Options --> Debugging

 

在“Symbol file (.pdb) locations:”下面的控件中输入微软默认 pdb 文件的下载路径“http://msdl.microsoft.com/download/symbols”。

 

在“Cache symbols from symbol servers to this directory:”下的编辑框中输入本地保存路径,如:D:/WinSymbols/MsDownSymbols。

 

 

 

下面两个 CheckBox 的意思分别为:

 

“Search the above locations only when symbols are loaded manually”。

 

调试器仅仅载入手动载入的 Symbol。勾上此选项,调试速度会更快,但 pdb 载入相对较少,调试信息较少,建议不勾选。

 

 

 

“Load symbols using the updated settings when the dialog is closed”

 

对话框关闭后,立刻加载符号表。勾上此选项可以立刻看到效果,调试速度当然会稍微慢一点,建议勾选。

 

 

 

点击 OK 关闭对话框,设置便生效了。

 

如图所示:

 

 

 

 

 

 

 

 

 

 

 

设置过了,当然要看看效果啦。

 

我们先看看正常情况下 CallStack 的状态,建立一个普通 Win32 程序,在InitInstance入口下个断点,F5开启调试,在 CallStack 窗口如下显示: 

 

 

 

 

 

    我们可以看到,在最下面两行中,信息是灰掉的,kernel32.dll中那个函数调用了我们的wWinMainCRTStartup也看不到,进程最开始由哪个函数创建也看不到。

 

    现在看看设置了 Symbol 时 CallStack 的状态,建立一个普通 Win32 程序,在InitInstance入口下个断点,F5开启调试,在 CallStack 窗口如下显示: 

 

 

 

 

 

    我们可以看到,程序是由kernel32.dll中的导出函数“_BaseProcessStart”开始的,_BaseProcessStart调用了我们的wWinMainCRTStartup函数,然后程序就运行起来了。

 

当然设置 Symbol 的用处远远不止这些,其余的就等您慢慢发现。

 

 

 

注:设置 Symbol 之后,调试速度会慢下来,如果无需知道系统函数是如何调用的,建议调试时不设置 Symbol。 

 

让Visual Studio载入Symbol(pdb)文件

标签:search   csdn   相对   from   ram   速度   crt   box   nbsp   

原文地址:http://www.cnblogs.com/zhehan54/p/7451368.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!