- 博客(15)
- 资源 (4)
- 收藏
- 关注
原创 二、C#数据类型
数据类型(Data Type)是一个很恼人的话题。似乎根本没必要对数据类型进行展开讲解,因为人人都懂。但是,数据类型本身又确实比较复杂,不仅涉及到值类型和引用类型,也涉及到内置类型和自定义类型,更涉及到C#类型、.NET类型、通用类型系统CTS、通用语言规范CLS、.NET standard等很多概念。本文就力争通过示例,把这些概念理清楚。
2024-07-21 12:58:42 894
原创 一、C#概述
原书第一章的内容非常简单,毕竟标题是Introducing C#,只是概述。从这一章看,《Essential C#12.0》并不是写给零基础学员的,正如本书《》所述,如果看这一章存在问题,那么您需要考虑换一本更浅显易懂的教材。本文不准备对原书内容做任何复述,仅以个人视角,力争一开始就陈述清楚几个关键概念,为以后学习大好基础。
2024-07-17 12:53:08 845
原创 0. 前言
我不认识Mark,所以这部简介是网上摘抄的:Mark Michaelis是创新型软件架构和开发公司IntelliTect的创始人、首席技术架构师和培训师。Mark领导着他的公司不断进取,同时在世界各地举办有关领导力或技术的会议,并代表微软或其他客户进行演讲。他撰写了大量文章和书籍,并且是东华盛顿大学的客座教授、Spokane .NET用户组的创始人,以及每年一届的TEDx Coeurd’Alene活动的联合组织者。
2024-07-16 20:16:05 352
原创 10. WinDbg综合实战
通过十篇文章,简单介绍了WinDbg调试Windows程序的方法。调试工具的使用,是一个熟能生巧的过程,道理并不很难,但需要记忆的命令较多,所以鼓励大家多多实际操作。软件调试真正的挑战,应该是计算机底层知识,比如对CPU、编译器、操作系统、汇编语言等,而这些知识又不是三言两语就能说清楚,所以,每当遇到困难时,我的建议是:不钻牛角尖,惹不起躲得起。说不定现在看来很难的问题,数月后便已不再是问题了。行文匆忙,错误与疏漏在所难免,欢迎批评指正。
2024-07-05 13:23:59 1041
原创 9. 让WinDbg自动打开DotNet Runtime源程序
本文介绍使用WinDbg调试 .NET应用程序的一个技巧。.NET应用程序的运行离不开CLR和即时编译器。如果我们想进一步学习即时编译器(clrjit.dll)的源代码,用WinDbg应该如何操作?下图是我们希望实现的功能:我们在调试自己测试用的C#程序Core.exe,调试过程中,我们把断点设置到了.NET Runtime源代码compiler.cpp 的 jitNativeCode 方法上,并且我们可以通过单步执行微软的源代码来跟踪Jit编译器的编译过程。
2024-07-03 11:42:14 709
原创 1. WinDbg概述
授之以鱼不如授之以渔,我们用一篇文章介绍了WinDbg的基本使用。我们并没有一个命令一个命令去讲解命令含义,相反,我们介绍了如何查所有的基本命令、元命令和扩展命令,介绍了如何使用帮助来查各个命令的使用方法。知道了方法以后,大家完全可以自学WinDbg软件的使用了,遇到问题就查帮助。相信随着使用次数的增加,对WinDbg功能的领会就会越来越深,逐步实现量变到质变。以后的文章中,除非特别必要,否则我不会再介绍WinDbg的具体命令含义了,而会聚焦于如何使用各种工具去调试、分析和学习.NET程序。
2024-06-29 13:24:16 787
原创 7. WinDbg观察托管程序架构
dumpdomain查到assembly和module!dumpmodule -mt ModuleAddress查到MethodTable!dumpmt -md MethodTable查到方法列表和EEClass!DumpClass EEClass查到字段。
2024-06-28 13:44:47 570
原创 6. 汇编语言与机器语言的差异
本文比较短,主要目的就是通过实例再次提醒读者,机器语言不等于汇编语言。对于调试老手来说,这个概念当然没必要强调,但对于刚学习编程的人来说,常常会搞不清楚两者的边界。虽然我们可以用汇编语言来分析本机代码,但如果遇到模棱两可情况,时一定要清楚只有机器码才是真正的CPU指令,
2024-06-27 13:03:02 425
原创 4. CPU寄存器与指令系统
在前一篇文章中,我们通过一个C#示例,介绍了使用WinDbg分析引用类型的实际内存布局。该文章其实尚未完成有关这个话题的全部内容陈述,而仅仅说清楚了一个引用类型其实是由两部分构成的:在栈空间保存着引用类型变量,该变量保存着堆空间中该实例的引用,而所谓的引用,其实就是一个内存地址,或者叫做指针,而且该指针并未指向对象的首字节,而是指向了对象的MethodTable指针这个字段。在堆空间中,该对象其实包括了三个部分:最低地址的部分是对象头,也有书籍称其为同步块;紧接对象头的是MethodTable指针;
2024-06-22 19:10:42 763
原创 3. WinDbg程序调试
在《》中,我们介绍了如何使用k命令查看线程栈,如何在线程栈中找到目标地址,如何使用该地址作为g命令的目标参数,以及如何使用!u命令将C#源代码汇编成汇编语句。今天这篇文章,将使用一个全新的C#示例来介绍值类型以及引用类型的内存布局。
2024-06-21 18:41:08 691
原创 2. WinDbg 主要功能
本来想写一篇使用WinDbg分析值类型和引用类型的文章,悲催的事情发生了,调试过程中出现意外,电脑死机,再重新调试时,程序的加载地址和之前所写都不一致了。为了不让已经写的部分作废,就将题目改成了WinDbg Step by Step (一),简单介绍一下WinDbg的使用。
2024-06-20 17:14:01 802
原创 .NET虚方法与callvirt
对于刚刚接触.NET的同学来说,虚方法(virtual method)及其重写技术(override)是学习面向对象(OOPs)的一道不高不低的坎,迈过去了一马平川,迈不过去则懵懵懂懂,十分熬人。本文以C#编程语言为例,结合其编译后的CIL代码,对.NET平台的虚方法及其调用进行了深度探索,着重分析了CIL中call和callvirt的区别。
2024-05-31 17:33:25 609
计算机+VS2022+汇编语言环境+语法高亮
2023-08-17
Excel 调用金蝶云星空WebAPi.zip
2020-06-05
通达信选股插件源码及DLL
2015-05-09
通达信DLL选股插件源码及详细教程
2015-05-08
例会会议纪要模板及使用说明
2015-05-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人