VS2010下调试.NET源码
微软走向开源,是时候用vs去单步调试进入源码了。参考地址:http://blog.csdn.net/waxgourd0/article/details/6600182
可供参考的文章:https://msdn.microsoft.com/en-us/library/Cc667410.aspx
1、工具- 选型 – 调试 - 常规,按照下图修改我框起来的地方:
2、工具- 选项 – 调试 - 符号,按照下图进行配置:
这里注意你只需要在位置里添加http://referencesource.microsoft.com/symbols这一项即可,后面是在编译过程中自己产生的,然后将符号缓存路径改为你希望放置的地方,在这里我的路径是D:\development\NetMassDownloader\src(我使用NetMassDonloader没有成功,总是搜索到可供下载的PDB文件为0,我使用的NetMassDownloader的版本为1.6.0.0,按照发布说明已经支持VS 10.0了,如果有谁知道怎么解决请告诉我一下),注意对此路径一定要有读写权限,最后勾选“除排除模块之外的所有模块”。
然后新建一个WPF的工程,我只是在界面上加了一个按钮,简单实现了一个按钮事件:
- private void button1_Click(object sender, RoutedEventArgs e)
- {
- MessageBox.Show("hello word");
- }

private void button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("hello word");
}
在MessageBox.Show("hello word")上设置断点,运行之后在调用堆栈上就可以观察到调用过程:

右键点击非灰色的可以发现可以查看源代码:

F11单步执行的时候可以发现以前不能查看的代码这时也可以跟深层地追踪源代码:
灰色部分右键点击之后发现”转到源代码“不可用,这时在加载符号中选择如图所示,就可以查看源代码,期间会有下载相应PDB的过程:

至于加载信息显示如下:

如上图所示我在编译以前别的VS平台编译过的工程(经过转换)无法使用转到源代码,加载信息同样如上所示,我当时以为是前两项没有找到PDB的缘故。当我新建一个工程编译一次后,除了新建的这个工程可以使用转到源代码,原本以前平台编译过原本不能使用“转到源代码”功能的工程也同样可以使用此功能了,看来上面的加载信息与能否使用调试源码没有必然联系,在这里希望达人解答一下上面的含义。
最后MS并没有将全部的源代码都开源,所以有时在使用时会有“没有可用的资源”的提示,这时如果还要查看源码的话可以按照堆栈的层次用Reflector直接查看源码。
VS2010下调试.NET源码的更多相关文章
- 比特币学习笔记(二)---在windows下调试比特币源码
根据我一贯的学习经验,学习开源代码的话,单单看是不够的,必须一边看一边调试才能尽快理解,所以我们要想法搭建windows下bitcoin源码的调试环境. 紧接着昨天的进度,想要调试linux下的比特币 ...
- Ubuntu下STL源码文件路径+VS2010下查看STL源码
Ubuntu版本信息 然后STL源码位置就在 /usr/include/c++/7/bits /usr/include/c++/7.4.9/bits 这两个文件下都有 然后我日常写程序用的Window ...
- vscode下调试caffe源码
caffe目录: ├── build -> .build_release // make生成目录,生成各种可执行bin文件,直接调用入口: ├── cmake ├── CMakeLists.tx ...
- 使用VS2012调试ReactOS源码
目录 一 下载并安装VS2012 二 下载并安装WDK80 三 下载ReactOS0315源码 四 下载并安装RosBE211 五 用RosBE命令行编译ReactOS源码 六 用VS2012编译nt ...
- 查看和调试Qt源码
简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进 ...
- 查看和调试Qt源码(动态编译的QT也可进入源码)good
简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进 ...
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...
- Android动态方式破解apk进阶篇(IDA调试so源码)
一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...
- Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)
一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk 主要采用的是静态方式,步骤也很简单,首先使用 ...
随机推荐
- 动态注册HttpModule
动态注册HttpModule 2014-06-05 08:58 by 汤姆大叔, 757 阅读, 4 评论, 收藏, 编辑 文章内容 通过前面的章节,我们知道HttpApplication在初始化的时 ...
- C# 词法分析器
当前标签: 编译原理 C# 词法分析器(七)总结 CYJB 2014-01-09 12:46 阅读:582 评论:1 C# 词法分析器(六)构造词法分析器 CYJB 2013-05-07 01 ...
- 【python】初识python的问题
这两天利用晚上时间简单的了解了一下python语言,在Mac上和Windows上都安装了python,对比两个平台,还是发现在mac上体验比较好一点.安装的版本好像也不一样,语法还有点小区别.简单的对 ...
- Python:Module Install Issues
Python里的Module安装过程总有一些奇怪的坑,在此整理一下,以供再遇到此类问题参看 (当然如果这篇文章有人看的话,希望能对你有所帮助~) 目前碰到的主要是以下几种: 0.使用PyCharm 1 ...
- linq to NHibernate
什么是linq to NHibernate 什么是linq to NHibernate?说简单一点就是linq + NHibernate. linq语句是.Net 3.5中新增的功能,从问世以来就 ...
- 输出一个string的所有排列情况
问题: 1.加入输入是{a,b,c}; 2.输出abc,acb,bac,bca,cab,cba; 代码描述: 1.递归遍历所有情况 2.方法FUN输入为:要排列的字符串char inp[];inp[] ...
- Hook SSDT中NtCreateProcessEx
#ifdef __cplusplus extern "C" { #endif #include <ntddk.h> #ifdef __cplusplus } #endi ...
- wpf中数据绑定(Datacontext)的应用
在winform开发中,我们常用到ado.net进行数据绑定,在编程技术日新月异的今天,这种繁杂的数据绑定方式已不能再适合开发人员,于是微软推出了wpf,更炫的界面美化,更简洁地编写控件,在wpf中使 ...
- .net调用Outlook 批量发送邮件,可指定Outlook中的账号来发送邮件
.net调用Outlook 批量发送邮件,可指定Outlook中的账号来发送邮件 源码可以在我的资源列表中下载: MPOEMail http://download.csdn.net/my VS2012 ...
- ShardedJedis实现学习
ShardedJedis实现学习-我们到底能走多远系列(33) 我们到底能走多远系列(31) 扯淡: 工作是容易的赚钱是困难的 恋爱是容易的成家是困难的 相爱是容易的相处是困难的 决定是容易的可是等待 ...