摘要:
一、简介 这是我的《Advanced .Net Debugging》这个系列的第七篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第五章,这一章主要讲的是从根本上认识托管堆和垃圾回收。软件系统的内存管理方式有两种,第一种是手动管理内存,这种方式容易产生一些问题产生,比如:悬空指针、重复释放,或 阅读全文
摘要:
一、简介 这是我的《Advanced .Net Debugging》这个系列的第六篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第四章。这章主要讲的是程序集加载器,比如:CLR 加载器简介、简单的程序集加载故障、加载上下文故障、互用性与 DllNotFoundException 和轻量级代码 阅读全文
摘要:
一、介绍 这是我的《Advanced .Net Debugging》这个系列的第五篇文章。今天这篇文章的标题虽然叫做“基本调试任务”,但是这章的内容还是挺多的。上一篇我们了解了一些调.NET 框架中必要的概念,比如:内存转储、值类型转储、引用类型转储、数组转储和异常转储等,我们既能做到知其然,又能做 阅读全文
摘要:
一、介绍 这是我的《Advanced .Net Debugging》这个系列的第四篇文章。今天这篇文章的标题虽然叫做“基本调试任务”,但是这章的内容还是挺多的。由于内容太多,故原书的第三章内容我分两篇文章来写。上一篇我们了解了一些调试技巧,比如:单步调试、下断点、过程调试等,这篇文章主要涉及的内容是 阅读全文
摘要:
一、简介 这是我的《Advanced .Net Debugging》这个系列的第三篇文章。这个系列的每篇文章写的周期都要很长,因为每篇文章都是原书的一章内容(太长的就会分开写)。再者说,原书写的有点早,有些内容还是需要修正的,调试每个案例,这都是需要时间的。今天这篇文章的标题虽然叫做“基本调试任务” 阅读全文
摘要:
一、简介 这是 2024 新年后我的第一篇文章,也是我的《Advanced .Net Debugging》这个系列的第二篇文章。这篇文章告诉我们为了进行有效的程序调试,我们需要掌握哪些知识。言归正传,无论采取什么形式来分析问题,对被调试系统的底层了解的越多,就越有可能成功的找出问题的根源。在 Net 阅读全文
摘要:
一、简介 我曾看到过许多开发人员使用错误的工具来分析问题,更有甚者,有些人连任何工具都没有使用。他们采取的分析方法通常包括:输出更多的调试信息,或者做一些临时性的代码审查。这里的临时性是指,通过猜测来推断问题可能来之哪个部分的代码。有时候,开发人员会幸运的发现问题刚好处于他们正在审查的代码当中。然而 阅读全文
摘要:
一、简介 今天是《Net 高级调试》的第十六篇文章,也是这个系列的最后一篇文章了。既然是最后一篇文章,我需要在这里说明一下,我当前的这个系列,不是针对《Net 高级调试》这本书来的,而是根据“一线码农”的视频做的这个系列。当然了,他的视频是根据《Net 高级调试》这本书来的,内容上做了一些调整,可以 阅读全文
摘要:
一、简介 今天是《Net 高级调试》的第十五篇文章,这个系列的文章也快结束了,但是我们深入学习的脚步还不能停止。上一篇文件我们介绍了C# 中一些锁的实现逻辑,并做到了眼见为实的演示给大家它们底层是如何实现的,今天这篇文件就主要介绍一些如何查找和解决在项目调试中遇到的锁的问题,比如:死锁、孤立锁、线程 阅读全文
摘要:
一、介绍 今天是《Net 高级调试》的第十四篇文章,这篇文章我们主要介绍和线程相关的内容,当然不是教你如何去写多线程,更不会介绍多线程的使用方法和API,今天,我们主要讲一下锁,一说到多线程,就会有并发的问题,也可以说是线程安全的问题,锁是没有办法避开的一个话题。我们今天不讲锁的使用方法,主要是关注 阅读全文