让Visual Studio载入Symbol(pdb)文件
让Visual Studio载入Symbol(pdb)文件
在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)文件的更多相关文章
- DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版及制作Visual Studio C#项目模板文件详解
关于 DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
- 关于Visual Studio中的TraceDebugging文件夹
最近一段时间发现C盘莫名其妙的变小了,各种清理各种卸载还是没用,电脑慢的是在无法使用 .最后只能一个文件夹一个文件夹的找,最后针对“C:\Documents and Settings\All User ...
- Visual Studio新的 .csporj 文件
Visual Studio新的 .csporj 文件非常方便,虽然目前还不支持WPF.WinForm等工程,但应用到控制台程序,类库还是没有任何问题的.只需要简单的用如下内容替换老的csproj即可: ...
- Visual Studio 2017创建XAML文件
Visual Studio 2017创建XAML文件 在Visual Stuido 2015中,在已经创建好的项目中添加XAML文件,只要右击项目,单击“添加”|“新建项”命令,然后从“添加新项” ...
- Visual Studio各版本工程文件之间的转换 [转载]
原网址:http://www.cnblogs.com/jmliao/p/5594179.html Visual Studio各版本工程文件之间的转换 由于VS版本比较多,低版本无法直接打开高版本的 ...
- Visual Studio 提示某个dll文件(已在Microsoft Visual Studio 外对该文件进行了修改,是否重新加载它)
如题: Visual Studio 提示某个dll文件(已在Microsoft Visual Studio 外对该文件进行了修改,是否重新加载它) 如果选择“是”,那恭喜你,第二次生成的时候,引用这个 ...
- 在visual studio code和visual studio中编写TypeScript文件自动生成JavaScript文件
注:此处的自动生成都为保存ts文件时自动生成js文件 VS CODE 只需要在TypeScript的终端控制台中输入如下命令即可,并注意需要将其中的*换成对应的文件名,此处的*似乎不能作为通用匹配. ...
- visual studio code编辑python文件
visual studio code 安装.通过360软件管家,查找visual studio code 下载安装即可 设置visual studio code为中文 打开进入软件,Ctrl + Sh ...
- C#.NET 中visual studio生成的.pdb/ .vshost.exe/ .vshost.exe.manifest文件是什么
pdb文件: 英文全称:Program Database File 中文全称:程序数据库 文件 Debug里的PDB是full,保存着调试和项目状态信息.有断言.堆栈检查等代码.可以对程序的调试配 ...
随机推荐
- Python Django框架笔记(五):模型
#前言部分来自Django Book (一) 前言 大多数web应用本质上: 1. 每个页面都是将数据库的数据以HTML格式进行展现. 2. 向用户提供修改数据库数据的方法.(例如:注册.发表评 ...
- 调整 Windows VM 的大小
本文说明如何使用 Azure Powershell 调整在 Resource Manager 部署模型中创建的 Windows VM 的大小. 创建虚拟机 (VM) 后,可以通过更改 VM 大小来扩展 ...
- mysql host'XXX' is not allowed to connect to this mysql server
错误的原因一般是没有添加 IP可远程的权限. 首先以 root 帐户登陆 MySQL 1.在 Windows 主机中点击开始菜单,运行,输入“cmd”,进入控制台,然后cd 进入MySQL 的 bin ...
- 【adb命令】在cmd窗口中使用adb install命令安装 中文名字apk报错的解决办法
1.在cmd窗口中使用adb install命令安装中文名字apk报错,安装英文名字apk就正常,详细报错如下图: 2.查看adb版本号:adb version 3.怀疑是adb版本的原因,尝试换个最 ...
- NOIP模板总结
NOIP模板总结 进考场先打一份缺省源: # include <cstdio> # include <iostream> # include <cstring> # ...
- BZOJ2226:LCMSum(欧拉函数)
Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes t ...
- cenos6.5 python2.6.6升级至python2.7.3
踩坑无数... 一.参照以下两篇博文把python升级至python2.7.3 https://www.cnblogs.com/senzhe/p/6322214.html http://www.jb5 ...
- Object Detection API 相关
训练官方提供的数据集: http://blog.csdn.net/LiJiancheng0614/article/details/77756252 训练自己的数据集(墙外): https://medi ...
- Android7.0调用系统相机拍照、读取系统相册照片+CropImageView剪裁照片
Android手机拍照.剪裁,并非那么简单 简书地址:[我的简书–T9的第三个三角] 前言 项目中,基本都有用户自定义头像或自定义背景的功能,实现方法一般都是调用系统相机–拍照,或者系统相册–选择照片 ...
- canal数据同步目录
我们公司对于数据同步有以下需求 1.多个mysql库中有一些基础表需要数据统一,mysql跨库同步 2.mysql热数据加载到redis 3.全文检索需要mysql同步到es 4.数据变更是附属的其它 ...