原创 Advanced .Net Debugging 8:線程同步

一、介紹    這是我的《Advanced .Net Debugging》這個系列的第八篇文章。這篇文章的內容是原書的第二部分的【調試實戰】的第六章【同步】。我們經常寫一些多線程的應用程序,寫的多了,有關多線程的問題出現的也就多了,因此,最

原创 Advanced .Net Debugging 7:託管堆與垃圾收集

一、簡介    這是我的《Advanced .Net Debugging》這個系列的第七篇文章。這篇文章的內容是原書的第二部分的【調試實戰】的第五章,這一章主要講的是從根本上認識託管堆和垃圾回收。軟件系統的內存管理方式有兩種,第一種是手動管

原创 Advanced .Net Debugging 6:程序集加載器

一、簡介    這是我的《Advanced .Net Debugging》這個系列的第六篇文章。這篇文章的內容是原書的第二部分的【調試實戰】的第四章。這章主要講的是程序集加載器,比如:CLR 加載器簡介、簡單的程序集加載故障、加載上下文故障

原创 Advanced .Net Debugging 5:基本調試任務(線程的操作、代碼審查、CLR內部的命令、診斷命令和崩潰轉儲文件)

一、介紹    這是我的《Advanced .Net Debugging》這個系列的第五篇文章。今天這篇文章的標題雖然叫做“基本調試任務”,但是這章的內容還是挺多的。上一篇我們瞭解了一些調.NET 框架中必要的概念,比如:內存轉儲、值類型轉

原创 Advanced .Net Debugging 4:基本調試任務(對象檢查:內存、值類型、引用類型、數組和異常的轉儲)

一、介紹    這是我的《Advanced .Net Debugging》這個系列的第四篇文章。今天這篇文章的標題雖然叫做“基本調試任務”,但是這章的內容還是挺多的。由於內容太多,故原書的第三章內容我分兩篇文章來寫。上一篇我們瞭解了一些調試

原创 Advanced .Net Debugging 3:基本調試任務(上)

一、簡介    這是我的《Advanced .Net Debugging》這個系列的第三篇文章。這個系列的每篇文章寫的週期都要很長,因爲每篇文章都是原書的一章內容(太長的就會分開寫)。再者說,原書寫的有點早,有些內容還是需要修正的,調試每個

原创 Advanced .Net Debugging 2:CLR基礎

一、簡介    這是2024新年後我的第一篇文章,也是我的《Advanced .Net Debugging》這個系列的第二篇文章。這篇文章告訴我們爲了進行有效的程序調試,我們需要掌握哪些知識。言歸正傳,無論採取什麼形式來分析問題,對被調試系

原创 Advanced .Net Debugging 1:你必須知道的調試工具

一、簡介        我曾看到過許多開發人員使用錯誤的工具來分析問題,更有甚者,有些人連任何工具都沒有使用。他們採取的分析方法通常包括:輸出更多的調試信息,或者做一些臨時性的代碼審查。這裏的臨時性是指,通過猜測來推斷問題可能來之哪個部分的

原创 Net 高級調試之十六:平臺互用性及P/Invoke和內存泄漏調試

一、簡介    今天是《Net 高級調試》的第十六篇文章,也是這個系列的最後一篇文章了。既然是最後一篇文章,我需要在這裏說明一下,我當前的這個系列,不是針對《Net 高級調試》這本書來的,而是根據“一線碼農”的視頻做的這個系列。當然了,他的

原创 Net 高級調試之十五:經典的鎖故障

一、簡介    今天是《Net 高級調試》的第十五篇文章,這個系列的文章也快結束了,但是我們深入學習的腳步還不能停止。上一篇文件我們介紹了C# 中一些鎖的實現邏輯,並做到了眼見爲實的演示給大家它們底層是如何實現的,今天這篇文件就主要介紹一些

原创 Net 高級調試之十四:線程同步的基礎知識和常見的同步原語

一、介紹    今天是《Net 高級調試》的第十四篇文章,這篇文章我們主要介紹和線程相關的內容,當然不是教你如何去寫多線程,更不會介紹多線程的使用方法和API,今天,我們主要講一下鎖,一說到多線程,就會有併發的問題,也可以說是線程安全的問題

原创 Net 高級調試之十三:託管堆的幾個經典破壞問題

一、介紹      今天是《Net 高級調試》的第十三篇文章,這篇文章寫作時間的跨度有點長。這篇文章我們主要介紹 經典的案例,如何查找問題,如何解決問題,最重要我們看到了問題,要有解決的思路,沒有思路就是死路一條了,當然,這個過程也不是一帆

原创 Net 高級調試之十二:垃圾回收機制以及終結器隊列、對象固定

一、簡介    今天是《Net 高級調試》的第十二篇文章,這篇文章寫作時間的跨度有點長。這篇文章我們主要介紹 GC 的垃圾回收算法,什麼是根對象,根對象的存在區域,我們也瞭解具有析構函數的對象是如何被回收的,終結器隊列和終結器線程也做到了眼

原创 Net 高級調試之十一:託管堆佈局架構和對象分配機制

一、簡介    今天是《Net 高級調試》的第十一篇文章,這篇文章來的有點晚,因爲,最近比較忙,就沒時間寫文章了。現在終於有點時間,繼續開始我們這個系列。這篇文章我們主要介紹託管堆的架構,對象的分配機制,我們如何查找在託管堆上的對象,我學完

原创 Net 高級調試之十:輕量級代碼生成的調試

一、簡介    今天是《Net 高級調試》的第十篇文章。說起來,高級調試,調試的內容還是挺多的,技巧也不少,但是,要想做一個合格的高級調試人員,還需要掌握如何調試動態生成的IL代碼。今天要探討的高級調試的技巧是如何調試通過 Emit 動態生