.NET高級(jí)調(diào)試

出版時(shí)間:2011年1月  出版社:機(jī)械工業(yè)出版社  作者:Mario Hewardt  頁(yè)數(shù):379  譯者:聶雪軍  
Tag標(biāo)簽:無  

前言

去年,我們?cè)谖④浌緫c祝了CLR發(fā)布十周年。CLR的目的是通過提供一種安全的和穩(wěn)定的環(huán)境來提高開發(fā)人員的生產(chǎn)效率。目前,CLR在各種環(huán)境中都得到了廣泛應(yīng)用,例如,在性能和可伸縮性上有著極高要求的大型服務(wù)器程序,以及日常使用的桌面程序等。隨著CLR的日益普及,基于CLR來開發(fā)軟件的人們同樣面臨著越來越多的挑戰(zhàn),因?yàn)樗麄兊漠a(chǎn)品必須能夠在不同的機(jī)器配置和網(wǎng)絡(luò)環(huán)境中運(yùn)行;此外,隨著硬件的高速發(fā)展,人們正在構(gòu)建的軟件功能越來越強(qiáng),同時(shí)復(fù)雜性也越來越高。所有這些情形都意味著,當(dāng)程序沒有按照預(yù)期方式運(yùn)行時(shí),你就需要負(fù)責(zé)分析和修復(fù)程序中的問題,因此了解一些調(diào)試知識(shí)和工具就顯得尤為重要。為了提高工作效率,CLR為開發(fā)人員實(shí)現(xiàn)了許多基礎(chǔ)的輔助機(jī)制,從而使開發(fā)人員能將主要精力放在關(guān)鍵邏輯上。事實(shí)上,人們無需花太多的時(shí)間來理解完整的CLR內(nèi)部細(xì)節(jié),而只需知道一些有助于分析問題的重要概念,這一點(diǎn)非常重要。然而,要想知道哪些概念是重要的卻并不容易。許多人都是通過反復(fù)摸索之后才掌握這些知識(shí),而這需要長(zhǎng)時(shí)間的積累過程并且有時(shí)候可能得不到準(zhǔn)確的答案。本書對(duì)運(yùn)行時(shí)的闡述恰到好處,它能幫助你理解在分析問題時(shí)遵循的思考過程以及在解決問題時(shí)采用的各種技術(shù),此外書中還給出了從調(diào)試實(shí)際應(yīng)用程序中提煉出的許多實(shí)用技術(shù)。因此,如果你希望提高調(diào)試CLR應(yīng)用程序的速度,那么應(yīng)該仔細(xì)閱讀本書。本書涵蓋了托管程序調(diào)試的許多方面——特別是對(duì)于一些難以診斷的領(lǐng)域,例如線程同步問題,本書給出了深入而細(xì)致的講解。此外,本書在說明調(diào)試技術(shù)時(shí)使用了大量的示例,使得讀者更容易掌握這些技術(shù)。在本書中重點(diǎn)講解的調(diào)試工具之一就是SOS調(diào)試器擴(kuò)展,這個(gè)工具是由CLR小組開發(fā)和維護(hù)的。每當(dāng)發(fā)布新版本的CLR時(shí),都會(huì)對(duì)SOS進(jìn)行升級(jí),使SOS包含更多的新功能。對(duì)于分析托管進(jìn)程中的問題來說,SOS是一種功能強(qiáng)大的工具。它提供的大部分功能都是無法從其他調(diào)試工具中獲得的。例如,SOS可以找出引用托管堆中某個(gè)對(duì)象的根對(duì)象,這是托管程序開發(fā)人員經(jīng)常遇到的問題之一。在熟悉了這個(gè)工具的使用后,你將可以進(jìn)一步理解程序的工作流程。我還從未見過有其他的書比這本書更詳細(xì)地介紹SOS。當(dāng)掌握本書介紹的知識(shí)后,在分析問題時(shí)可以付出更少的時(shí)間和精力。我希望讀者在閱讀這本書時(shí)獲得的樂趣與我在審閱本書手稿時(shí)獲得的樂趣是一樣的。

內(nèi)容概要

這是一本介紹如何通過非托管調(diào)試器(包括WinDBG、NTSD和CDB等)來調(diào)試?NET應(yīng)用程序的書籍。本書內(nèi)容主要包括:調(diào)試工具簡(jiǎn)介、CLR基礎(chǔ)、基本調(diào)試任務(wù)、程序集加載器、托管堆與垃圾收集、同步、互用性以及一些高級(jí)主題,如事后調(diào)試、一些功能強(qiáng)大的調(diào)試工具和.NET 4?0中的新功能等。

作者簡(jiǎn)介

作者:(美國(guó))赫瓦特(Mario Hewardt) 譯者:聶雪軍 等Mario Hewardt,是微軟公司的一位資深開發(fā)經(jīng)理,在WirIdows系統(tǒng)級(jí)開發(fā)領(lǐng)域擁有十余年的開發(fā)經(jīng)驗(yàn)。他目前領(lǐng)導(dǎo)開發(fā)團(tuán)隊(duì)負(fù)責(zé)Microosoft在線IT管理解決方案的開發(fā)。Hewardt是《Windows高級(jí)調(diào)試》(機(jī)械工業(yè)出版社2009年5月出版)的作者之一。

書籍目錄

對(duì)本書的贊譽(yù)譯者序序前言關(guān)于作者第一部分 簡(jiǎn)介 第1章 調(diào)試工具簡(jiǎn)介  1.1windows調(diào)試工具集  1.2.net2.0可再發(fā)行組件  1.3.net2.0sdk  1.4sos  1.5sosex  1.6clr分析器  1.7性能計(jì)數(shù)器  1.8.net反編譯器  1.9powerdbg  1.10托管調(diào)試助手  1.11小結(jié) 第2章 clr基礎(chǔ)  2.1高層概覽  2.2clr和windows加載器   2.2.1加載非托管映像   2.2.2加載.net程序集  2.3應(yīng)用程序域   2.3.1系統(tǒng)應(yīng)用程序域   2.3.2共享應(yīng)用程序域   2.3.3默認(rèn)應(yīng)用程序域  2.4程序集簡(jiǎn)介  2.5程序集清單  2.6類型元數(shù)據(jù)   2.6.1同步塊表   2.6.2類型句柄   2.6.3方法描述符   2.6.4模塊   2.6.5元數(shù)據(jù)標(biāo)記   2.6.6eeclass  2.7小結(jié) 第3章 基本調(diào)試任務(wù)  3.1調(diào)試器以及調(diào)試目標(biāo)  3.2符號(hào)  3.3控制調(diào)試目標(biāo)的執(zhí)行   3.3.1中斷執(zhí)行   3.3.2恢復(fù)執(zhí)行   3.3.3單步調(diào)試代碼   3.3.4退出調(diào)試會(huì)話  3.4加載托管代碼調(diào)試的擴(kuò)展命令   3.4.1加載sos調(diào)試器擴(kuò)展   3.4.2加載sosex調(diào)試器擴(kuò)展  3.5控制clr的調(diào)試  3.6設(shè)置斷點(diǎn)   3.6.1在jit編譯生成的函數(shù)上設(shè)置斷點(diǎn)   3.6.2在還沒有被jit編譯的函數(shù)上設(shè)置斷點(diǎn)   3.6.3在預(yù)編譯的程序集中設(shè)置斷點(diǎn)   3.6.4在泛型方法上設(shè)置斷點(diǎn)  3.7對(duì)象檢查   3.7.1內(nèi)存轉(zhuǎn)儲(chǔ)   3.7.2值類型的轉(zhuǎn)儲(chǔ)   3.7.3轉(zhuǎn)儲(chǔ)基本的引用類型   3.7.4數(shù)組的轉(zhuǎn)儲(chǔ)   3.7.5棧上對(duì)象的轉(zhuǎn)儲(chǔ)   3.7.6找出對(duì)象的大小   3.7.7異常的轉(zhuǎn)儲(chǔ)  3.8線程的操作   3.8.1clrstack   3.8.2threads   3.8.3dumpstack   3.8.4eestack   3.8.5comstate  3.9代碼審查   3.9.1反匯編代碼   3.9.2從代碼地址上獲得方法描述符   3.9.3顯示中間語(yǔ)言指令  3.10clr內(nèi)部命令   3.10.1獲得clr的版本   3.10.2根據(jù)名字找到方法描述符   3.10.3對(duì)象同步塊的轉(zhuǎn)儲(chǔ)   3.10.4對(duì)象方法表的轉(zhuǎn)儲(chǔ)   3.10.5托管堆和垃圾收集器信息的轉(zhuǎn)儲(chǔ)  3.11診斷命令   3.11.1找出對(duì)象的應(yīng)用程序域   3.11.2進(jìn)程信息  3.12sosex擴(kuò)展命令   3.12.1擴(kuò)展的斷點(diǎn)支持   3.12.2托管元數(shù)據(jù)   3.12.3?;厮荨  ?.12.4對(duì)象檢查   3.12.5自動(dòng)死鎖檢測(cè)   3.12.6托管堆與垃圾收集命令  3.13崩潰轉(zhuǎn)儲(chǔ)文件  3.14小結(jié)第二部分 調(diào)試實(shí)踐第三部分 高級(jí)主題

章節(jié)摘錄

插圖:當(dāng)加載私有程序集時(shí),它通常只會(huì)局限于某個(gè)應(yīng)用程序域中。根據(jù)之前對(duì)應(yīng)用程序域的討論,我們知道在一個(gè).NET應(yīng)用程序中通常會(huì)包含三個(gè)應(yīng)用程序域。除了系統(tǒng)應(yīng)用程序域和共享應(yīng)用程序域之外,程序集要么是被加載到默認(rèn)應(yīng)用程序域中,要么是被加載到顯式創(chuàng)建的應(yīng)用程序域中。當(dāng)程序集被加載到某個(gè)應(yīng)用程序域時(shí),它將停留在這個(gè)應(yīng)用程序域中,直到這個(gè)應(yīng)用程序域被銷毀。由于程序集都是局限在某個(gè)應(yīng)用程序域中,那么對(duì)于任何一個(gè)應(yīng)用程序域,我們?nèi)绾握页銎渲屑虞d了哪些程序集?在本章的前面,我們使用了SOS的dumpdomain命令來轉(zhuǎn)儲(chǔ)出某個(gè)進(jìn)程中所有的應(yīng)用程序域。在dumpdomain命令的輸出中包含了每個(gè)應(yīng)用程序域中加載的所有程序集。清單2-3給出了在02simple.exe上執(zhí)行擴(kuò)展命令dumpdomain時(shí)輸出的信息。我們可以看到,在默認(rèn)的應(yīng)用程序域中包含了兩個(gè)已加載的程序集:02simple.exe和mscorlib.d11。此外,程序集的名字同樣也是它們的地址。當(dāng)使用SOS的dumpassembly命令來獲取每個(gè)程序集的進(jìn)一步信息時(shí),需要用到這些地址。我們可以使用擴(kuò)展命令dumpassembly,并將程序集的地址作為命令參數(shù)來獲得更多的信息。

媒體關(guān)注與評(píng)論

“對(duì)于任何一個(gè).NET開發(fā)人員來說,本書都具有極高的參考價(jià)值。它包含了許多調(diào)試技巧以及CLR內(nèi)部工作機(jī)制的細(xì)節(jié),這對(duì)于設(shè)計(jì)軟件架構(gòu)的開發(fā)人員來說是非常有益的?!薄  狫effrey Richter,Wintellect 公司顧問,培訓(xùn)理由和作者“這是Mario推出的又一本好書。他之前著的《Windows高級(jí)調(diào)試》(與Daniel Pravat合著)對(duì)于非托管代碼的調(diào)試來說是一本不可多得的參考書,而本書同樣具有極高的質(zhì)量,闡述清晰并且探討深入,因此對(duì)于.NET’調(diào)試來說同樣具有幫助作用?!薄  狹ark Russinovich,微軟公司技術(shù)顧問

編輯推薦

《.NET高級(jí)調(diào)試》:這是分析.NET應(yīng)用程序問題方面的一本全面且實(shí)用的參考書?!?NET高級(jí)調(diào)試》首次專門且系統(tǒng)地介紹了如何分析當(dāng)前最復(fù)雜和最具挑戰(zhàn)性的.NET應(yīng)用程序問題。這是一本介紹如何通過非托管調(diào)試器(包括WinDBG、NTSD和CDB等)來調(diào)試.NET應(yīng)用程序的書籍。作者詳細(xì)闡述了如何借助這些工具找出問題的真實(shí)原因——這比使用其他任何調(diào)試器都將節(jié)省大量的調(diào)試時(shí)間。作者首先介紹了在使用.NET非托管調(diào)試器時(shí)的一些關(guān)鍵概念。接下來介紹了許多巧妙的調(diào)試技術(shù),并且通過真實(shí)的示例來展示各種常見的C#編程錯(cuò)誤。讀者在《.NET高級(jí)調(diào)試》中可以學(xué)到:●使用事后調(diào)試技術(shù),包括Power DBG以及其他“強(qiáng)大的調(diào)試工具”?!窭斫庠冢甆ET CLR 4.O中包含的新調(diào)試功能以及與之前版本的差異?!裾莆諏?duì)Windows調(diào)試工具集、SOS、SOSEX、CLR分析器以及其他調(diào)試工具的使用?!裆钊肜斫釩LR內(nèi)部工作機(jī)制,例如分析線程特定的數(shù)據(jù)、托管堆和垃圾收集器、互用層以及.NET異常等?!窠鉀Q一些復(fù)雜的同步問題、托管堆問題、互用性問題等。●如何生成和分析崩潰轉(zhuǎn)儲(chǔ)。

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    .NET高級(jí)調(diào)試 PDF格式下載


用戶評(píng)論 (總計(jì)29條)

 
 

  •   講的很不錯(cuò)。講了不少**** 平臺(tái)基礎(chǔ)內(nèi)容。像 加載CLR,元數(shù)據(jù)、GC如何工作等等,講的很詳細(xì)、易懂,不過調(diào)試需要比較好的基礎(chǔ)知識(shí)。
  •   ****必看調(diào)試
  •   到手后一直沒時(shí)間拜讀,最近上班抽空看了前幾章.很都深度,需要一定的基礎(chǔ).看著有點(diǎn)吃力.需要定下心來慢慢看.
  •   這是我最后一次在當(dāng)當(dāng)買東西了。
  •   書都很值得看
  •   對(duì)調(diào)試工作幫助很大。
  •   正開始研讀!
  •   給老公買的,他說書不錯(cuò)
  •   研究****閱讀一下
  •   寫的很好有深度
  •   系統(tǒng)的學(xué)習(xí)一下clr調(diào)試技術(shù)
  •   對(duì)基礎(chǔ)知識(shí)有要求
  •   對(duì)于我這個(gè)不是學(xué)計(jì)算機(jī)出生的人來說,說的內(nèi)容稍微的有點(diǎn)難。
  •   這書還不錯(cuò)吧,值得購(gòu)買
  •   看看還是很有收獲的啊
  •   待我細(xì)細(xì)研究。
  •   還不錯(cuò) 就是貴了點(diǎn)
  •   實(shí)用性不太大,只適用于某些特定場(chǎng)景
  •   沒認(rèn)真的去看,只是翻了一翻~里面介紹了一些調(diào)試工具,覺得還可以
  •   有點(diǎn)難度,不易看懂
  •   書中的內(nèi)容有點(diǎn)過時(shí),而且 配套的 網(wǎng)站 已經(jīng)打不開, 看樣子 作者已經(jīng) 放棄對(duì)這本書的 售后支持了。 書的紙張比較薄,質(zhì)量相對(duì)差了點(diǎn), 對(duì)不起這個(gè)價(jià)錢。
  •   講的很不錯(cuò)。講了不少.NET 平臺(tái)基礎(chǔ)內(nèi)容。像 加載CLR,元數(shù)據(jù)、GC如何工作等等,講的很詳細(xì)、易懂,不過調(diào)試需要比較好的基礎(chǔ)知識(shí)。
  •   沒有實(shí)際用途,只能了解一下,讀了以一遍,發(fā)現(xiàn)知道和不知道都沒什么區(qū)別,建議不要購(gòu)買
  •   寫的很好,很實(shí)用的書
  •   內(nèi)容較多,研究中,不便隨意發(fā)表評(píng)論
  •   同事極力推薦的,對(duì)調(diào)試技巧很有幫助
  •   windows高級(jí)調(diào)試的.net版本
  •   學(xué)習(xí)了,應(yīng)該還可以
  •   .NET高級(jí)調(diào)試
 

250萬本中文圖書簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7