2018-8-10-调试-ms-源代码
| title | author | date | CreateTime | categories | 
|---|---|---|---|---|
| 
 调试 ms 源代码 
 | 
 lindexi 
 | 
 2018-08-10 19:17:19 +0800 
 | 
 2018-2-13 17:23:3 +0800 
 | 
 调试 dotpeek 反编译 
 | 
如果需要调试 WPF 源代码或框架源代码,那么需要使用 DotPeek。
首先需要下载 dotPeek ,可以到官网下载 dotPeek: Free .NET Decompiler & Assembly Browser by JetBrains 还可以到 csdn 下载
首先打开 dotPeek 然后点击启动符号服务器,所有符号。
然后点击工具设置,可以看到这个页面
然后打开 VS 工具选项,在调试设置符号,刚才已经复制了,现在添加就好
然后还需要去掉微软的服务和本地缓存
然后写一个呆磨进行测试
现在就可以开始调试框架源代码了
只需要在一些函数使用断点,然后堆栈跳转,假如我在 MouseDown 写一个断点,在触发按下,点击堆栈,可以看到外部代码。右击外部代码显示,这样就可以看到 垃圾wr 做的,双击他,可以跳到一个页面,点击加载就可以。
这时候可以看到 dotPeek 在反编译,这个时间比较长,需要去做一些你喜欢做的事情,回来就可以发现 dotPeek 反编译好而且你看到 ms 源代码,这时候可以尝试源代码断点,但是不是所有地方都可以断点。
如果你发现无法进入代码,那么尝试安装 Resharper ,如果还是不行,那么需要问一下,是不是使用 UWP ,因为现在我尝试 UWP 还没有成功。
如果还是无法成功,不要来问我,我教了几个小伙伴,有几个是没法进入代码,使用方法都一样,我自己去他电脑弄了,结果我无法进入。
那么接下来就是调试 ms 源代码了,因为已经进入了 Release 的反编译代码,所以通过堆栈调用就进入了源代码,在需要的地方使用断点,当然,不是所有地方可以使用断点。但是进入之后还是可以和原来的调试自己代码一样,看到没有被优化掉的参数的值,可以修改这些值,可以进入其他地方代码设置断点,设置条件,已经使用单步调试跟着代码。
在 win10 下,调试的代码是没有注释的,但是可以对比 dotpeek 的代码来看,一般他里面的代码就是有注释的,反编译的代码和 dotPeek 看到代码有些地方是不同的,但是实际功能是一样的。但是微软源代码使用的框架可能和自己的不一样,看起来代码还是不相同。
最好是自己去下载微软源代码,然后把他放在一个仓库,这样可以看到不同的框架修改的代码。
因为 UWP 编译使用 .netNative ,很多底层都是使用 C++ 写的,所以无法对 UWP 进行反编译
下载
2018-8-10-调试-ms-源代码的更多相关文章
- 常量,字段,构造方法  调试 ms 源代码  一个C#二维码图片识别的Demo  近期ASP.NET问题汇总及对应的解决办法  c# chart控件柱状图,改变柱子宽度  使用C#创建Windows服务  C#服务端判断客户端socket是否已断开的方法  线程 线程池 Task  .NET 单元测试的利剑——模拟框架Moq
		
常量,字段,构造方法 常量 1.什么是常量  常量是值从不变化的符号,在编译之前值就必须确定.编译后,常量值会保存到程序集元数据中.所以,常量必须是编译器识别的基元类型的常量,如:Boolean ...
 - 调试 ms 源代码
		
如果需要调试 WPF 源代码或框架源代码,那么需要使用 DotPeek. 首先需要下载 dotPeek ,可以到官网下载 dotPeek: Free .NET Decompiler & Ass ...
 - 调试 Hadoop 源代码
		
环境是 64bit Ubuntu 14.04 系统, jdk 1.7 以及 Eclipse Mars (4.5) 这里介绍两种调试 Hadoop 源代码的方法: 利用 Eclipse 远程调试工具和打 ...
 - 01 mybatis框架整体概况(2018.7.10)-
		
01 mybatis框架整体概况(2018.7.10)- F:\廖雪峰 JavaEE 企业级分布式高级架构师课程\廖雪峰JavaEE一期\第一课(2018.7.10) maven用的是3.39的版本 ...
 - 调试HotSpot源代码
		
之前的文章在Ubuntu 16.04上编译OpenJDK8的源代码 已经介绍过在Ubuntu上编译OpenJDK8的源代码,这一篇将介绍在Ubuntu上调试OpenJDK8源代码的2种方式. 1.GD ...
 - 调试HotSpot源代码(配视频)
		
本文将详细介绍在Ubuntu16.04 LTS上对OpenJDK8进行编译,为了方便大家快速搭建起OpenJDK8的调试开发环境,我还录制了对应的视频放到了B站上,大家可以参考. 视频地址:https ...
 - 在ASP.NET 5项目中使用和调试外部源代码包
		
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于在ASP.NET 5中,项目依赖都是通过"包"来引用,所以使用 ...
 - 申请Office 365一年免费的开发者账号攻略(2018年10月份版本)
		
要进行Office 365开发,当然需要有完整的Office 365环境才可以.为了便于广大开发人员快速地启动这项工作,微软官方给所有开发人员提供了免费的一年开发者账号 那么如何申请Office ...
 - IntelliJ IDEA 最新激活码(截止到2018年10月14日)
		
IntelliJ IDEA 注册码: EB101IWSWD-eyJsaWNlbnNlSWQiOiJFQjEwMUlXU1dEIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYX ...
 - 调试Java源代码时变量的值无法追踪怎么办?
		
问题:调试Java源代码时,只能看到源代码,却无法查看源代码中的变量的即时值 原因:jre为了节省空间,在打包时去掉了class文件中的调试信息. 思路:使用jdk里的src.zip源码重新编译生成完 ...
 
随机推荐
- SpringBoot整合MongoDb(二)
			
构建项目及配置 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</ ...
 - 【BZOJ2200】道路和航线(并查集,拓扑排序,最短路)
			
题意:n个点,有m1条双向边,m2条单向边,双向边边长非负,单向边可能为负 保证如果有一条从x到y的单项边,则不可能存在从y到x的路径 问从S出发到其他所有点的最短路 n<=25000,n1,m ...
 - Internet History, Technology, and Security(week5)——Technology: Internets and Packets
			
前言: 之前都在学习Internet的历史,从这周开始,进入到了Internet技术的学习. Layer1: Link Introduction / The Link Layer 80年代之前,主流网 ...
 - CSS的一些单位,如rem、px、em、vw、vh、vm
			
总结了一下一些单位的不同 px:像素(pixel)相对长度单位,,是相对于屏幕显示器分辨率而言的: em:em的值并不是固定的,会集成父级元素的字体大小: 注意: 1.body选择其中声明Font-s ...
 - POJ	1434 Fill the Cisterns! (模拟 or 二分)
			
Fill the Cisterns! 题目链接: http://acm.hust.edu.cn/vjudge/contest/129783#problem/F Description During t ...
 - 北风设计模式课程---开放封闭原则(Open Closed Principle)
			
北风设计模式课程---开放封闭原则(Open Closed Principle) 一.总结 一句话总结: 抽象是开放封闭原则的关键. 1."所有的成员变量都应该设置为私有(Private)& ...
 - windows下数据库备份bat
			
@echo offset "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"C:/mysql/bin/mysqldump --opt -u root -- ...
 - Markdown Memo(memorandum)
			
居中 html语法 <center>居中</center> 左对齐 <p align="left">左对齐</p> 右对齐 < ...
 - CSS- 层叠和继承
			
层叠和继承 - 学习 Web 开发 | MDN 优先级 - CSS:层叠样式表 | MDN 继承 - CSS:层叠样式表 | MDN CSS 层叠 - CSS:层叠样式表 | MDN
 - spring Cloud 之 Eureka、Feign、Hystrix、Zuul、Config、Bus
			
一.服务发现——Netflix Eureka Eureka包含两个组件: Eureka Server和Eureka Client 1.创建Eureka Server服务端 (1).引入依赖 父工程po ...