- 博客(11)
- 收藏
- 关注
原创 用WinDbg探索CLR世界 [3] 跟踪方法的 JIT 过程
http://www.blogcn.com/blog/cool/main.asp?uid=flier_lu&id=1678453本来想按照 sos 的帮助文件上命令的分类逐步介绍 WinDbg 下使用 sos 调试 CLR 程序,但发现这样实在不够直观。索性改成根据我分析 CLR 的实际案例,step by step 介绍功能,这样结构上虽然混乱一点,但更加直观,也易于上手 :P前面两篇文章里
2004-04-22 14:46:00 1514
原创 内存拷贝的优化方法
http://www.blogcn.com/blog/cool/main.asp?uid=flier_lu&id=1577430http://www.blogcn.com/blog/cool/main.asp?uid=flier_lu&id=1577440在复杂的底层网络程序中,内存拷贝、字符串比较和搜索操作很容易成为性能瓶颈所在。编译器自带的此类函数虽然做了一些通用性的优化工作,但因为在使用
2004-04-22 14:46:00 2552 3
原创 .NET 1.1中预编译ASP.NET页面实现原理浅析 [1] 自动预编译机制浅析
http://flier_lu.blogone.net?id=1544105.NET 1.1中预编译ASP.NET页面实现原理浅析 MS在发布ASP.NET时的一大功能特性是,与ASP和PHP等脚本语言不同,ASP.NET实际上是一种编译型的快速网页开发环境。这使得ASP.NET在具有开发和修改的简便性的同时,不会负担效率方面的损失。实现上ASP.NET与JSP的思路类似,引擎在第一次使
2004-04-07 16:26:00 1027
原创 CLR 中匿名函数的实现原理浅析
http://flier_lu.blogone.net/?id=1397624CLR 中匿名函数的实现原理浅析 C# 2.0中提供了通过delegate实现匿名函数功能,能有效地减少用户的薄记代码工作,例如以下为引用: ...button1.Click += new EventHandler(button1_Click);...void button1_Click
2004-04-07 14:37:00 1078
原创 在用户态进行虚拟空间地址向物理空间地址的转换
http://flier_lu.blogone.net/?id=1428057 在《自动获取 NT 系统服务描述表与函数名映射表》一文中,我给出了一个从虚地址向物理地址转换的经验函数。以下为引用: PHYSICAL_ADDRESS TPhysicalMemoryMapping::LinearAddressToPhysicalAddress(LPCVOID lpVi
2004-04-05 23:34:00 1787
原创 Win32 核心 DPC 设计思想和实现思路浅析
http://flier_lu.blogone.net/?id=1397656 x86架构设计在上是基于中断思想的,因而从DOS到Win32,操作系统中大量使用中断的概念来表达异步操作的行为。但与DOS下独占的情况不同,Win32下需要由系统对多任务进行调度,因此中断响应代码必须尽可能地简单,并且尽快的将控制权交还给系统。虽然这样一来系统调度的响应速度和实现过程方便了,但还是有很多功能需
2004-04-05 22:58:00 1525
原创 C# 2.0 中Iterators的改进与实现原理浅析
http://flier_lu.blogone.net/?id=1511638 C#语言从VB中吸取了一个非常实用的foreach语句。对所有支持IEnumerable接口的类的实例,foreach语句使用统一的接口遍历其子项,使得以前冗长的for循环中繁琐的薄记工作完全由编译器自动完成。支持IEnumerable接口的类通常用一个内嵌类实现IEnumerator接口,并通过IEnume
2004-04-05 22:56:00 855
原创 Win32 调试接口设计与实现浅析 [1] 用户态调试器结构初探
http://flier_lu.blogone.net/?id=1307208Win32 调试接口设计与实现浅析 所谓调试器实际上是一个很宽泛的概念,凡是能够以某种形式监控其他程序执行过程的程序,都可以泛称为调试器。在Windows平台上,根据调试器的实现原理大概可以将之分为三类:内核态调试器、用户态调试器和伪代码调试器。 内核态调试器直接工作在操作系统内核一级,在硬件与操作系统之
2004-04-05 22:56:00 1429
原创 用WinDbg探索CLR世界 [2] 线程
http://flier_lu.blogone.net/?id=1370342[2] 线程 在配置好WinDbg之后,我们载入一个CLR程序并执行至CLR被载入,然后开始我们的CLR探索之旅。 首先,使用!threads命令看看当前CLR中有哪些线程正在执行以下为引用: 0:004> !threadsThreadCount: 2UnstartedThread
2004-04-05 22:56:00 994
原创 Win32 调试接口设计与实现浅析 [2] 调试事件
http://flier_lu.blogone.net/?id=1324316[2] 调试事件 前面说到 Win32 下的用户态调试器实际上就是一个while循环,循环体内先等待一个调试事件,然后处理之,最后将控制权交还给调试服务器,就好像一个窗口消息循环一样。调试事件的核心实际上就是一个DEBUG_EVENT结构,在WinBase.h文件中定义如下:以下为引用:
2004-04-05 22:53:00 1215
原创 用WinDbg探索CLR世界[1] - 安装与环境配置
http://flier_lu.blogone.net/?id=1270368 一直以来,我对CLR的分析都是基于MSDN、.NET Framework SDK自带文档和Rotor项目提供的源代码进行静态分析,辅以自己写的一些小例子或对Rotor的修修补补,来进行有限度的动态分析。虽然也用SoftIce跟踪过某些核心函数的机制,但感觉实在是太痛苦了,呵呵。 最近偶然之间发现我的偶像
2004-04-05 22:53:00 1232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人