日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Windows 2000對(duì)調(diào)試技術(shù)的支持

盡管本書(shū)中的很多內(nèi)容都稱之為“ Undocumented ” , 但其中的一些內(nèi)容只能通過(guò)挖掘操作系統(tǒng)的代碼才能獲取 。Windows 2000 DDK ( Device Driver Kit )提供了一個(gè)強(qiáng)大的調(diào)試器可以出色的完成這方面的工作 。本章將從建立一個(gè)完善的調(diào)試環(huán)境開(kāi)始介紹 。在閱讀隨后的章節(jié)時(shí) , 你會(huì)經(jīng)常的使用內(nèi)核調(diào)試器來(lái)挖掘操作系統(tǒng)內(nèi)部的各種特性 。如果你對(duì)內(nèi)核調(diào)試器很是厭煩 , 或許你需要制作一個(gè)自己的調(diào)試工具了 。因此 , 本章還將介紹有關(guān) Windows 2000 調(diào)試接口的文檔化和未文檔化的資料 , 包括微軟符號(hào)文件( Symbol File )的詳細(xì)信息 。It features two sample librarIEs with companion applications that list processes, process and system modules, and various kinds of symbol information buried inside the Windows 2000 symbol files。做為一個(gè)特殊收獲 , 在本章結(jié)束時(shí) , 你將得到首份有關(guān) PDB ( Microsoft Program Database )的公開(kāi)文檔 。
建立一個(gè)調(diào)試環(huán)境
“嗨 , 我不想調(diào)試 Windows 2000 程 序 。在此之前 , 我想自己寫(xiě)一個(gè)先!”當(dāng)你讀到這個(gè)標(biāo)題時(shí)你可能會(huì)這樣大喊出來(lái) 。“很對(duì)!”我說(shuō)“這就是你該去做的!”但是為什么你要以建立一個(gè)調(diào)試環(huán)境開(kāi) 始這次旅行呢?答案很簡(jiǎn)單:調(diào)試器是進(jìn)入系統(tǒng)的后門(mén) 。當(dāng)然 , 這并不是調(diào)試器開(kāi)發(fā)人員的主要目的 。然而 , 當(dāng)你跟蹤代碼的執(zhí)行過(guò)程或者你的程序意外的玩完時(shí) , 任何優(yōu)秀的調(diào)試器都須能夠告訴你一些有用的系統(tǒng)信息 。僅僅報(bào)告一個(gè)指向 4GB 地址空間某處的 8 位 崩潰地址 , 然后讓你獨(dú)自一人去尋找到底發(fā)生了什么 , 真是無(wú)法讓人接受 。調(diào)試器至少應(yīng)該告訴你最后執(zhí)行的引發(fā)錯(cuò)誤的代碼是哪個(gè)模塊中的代碼 , 而且 , 在理想情 況下 , 它還應(yīng)該告訴你讓你的程序玩完的那個(gè)函數(shù)的名稱 。因此 , 調(diào)試器通常必須知道比編程手冊(cè)還要多的系統(tǒng)信息 , 你可以利用這些信息來(lái)研究系統(tǒng)的內(nèi)部情況 。
Windows 2000 提供了兩個(gè)調(diào)試器: WinDbg.exe (發(fā)音很像“ WindBag ” , 譯注: WindBag 在俚語(yǔ)中指空話連篇的人)一個(gè) Win32 GUI 程序和 i386kd.exe 一個(gè)提供與之等價(jià)功能的命令行模式程序 。我曾經(jīng)同時(shí)使用過(guò)這兩個(gè)程序 , 最后確定 i386kd.exe 是最好的一個(gè) , 因?yàn)樗幸唤M非常強(qiáng)大的選項(xiàng) 。不過(guò) , 最近看來(lái) WinDbg.exe 似乎有所改進(jìn) 。不過(guò) , 本書(shū)中的所有例子都是與 i386kd.exe 相關(guān)的 。就像你猜想的那樣 , i386 前綴表示目標(biāo)平臺(tái)( Intel 386 處理器家族 , 也包括 Pentium ) kd 是 Kernel Debugger (內(nèi)核調(diào)試器)的縮寫(xiě) 。Windows 2000 內(nèi)核調(diào)試器是一個(gè)非常強(qiáng)大的工具 。比如 , 他知道如何使用 Windows 2000 安裝光盤(pán)中的符號(hào)文件( Symbol files ) , 因此 , 可以給出系統(tǒng)內(nèi)存中幾乎任何地址的相關(guān)符號(hào)信息(這非常有價(jià)值) 。而且 , 它還可以反編譯二進(jìn)制代碼、將內(nèi)存信息的 16 進(jìn)制轉(zhuǎn)儲(chǔ)數(shù)據(jù)以多種格式顯示 , 甚至還能顯示一些內(nèi)核關(guān)鍵結(jié)構(gòu)的布局 。在調(diào)試器的在線幫助中有其命令行接口的詳細(xì)文檔 。
準(zhǔn)備一次崩潰轉(zhuǎn)儲(chǔ)( Crash Dump )
這 些都是好消息 。壞消息是你在內(nèi)核調(diào)試器順從你之前 , 必須做一些準(zhǔn)備工作 。第一個(gè)障礙是調(diào)試通常涉及兩臺(tái)獨(dú)立的計(jì)算機(jī)(通過(guò)線路連接在一起) , 其中一臺(tái)運(yùn)行 調(diào)試器 , 另一臺(tái)用于被調(diào)試 。然而 , 如果并不需要實(shí)時(shí)調(diào)試 , 那么有一個(gè)簡(jiǎn)單的方法 , 可以不需要第二臺(tái)機(jī)器 。例如 , 如果一個(gè)有錯(cuò)誤的程序拋出了一個(gè)未處理的異 常而引發(fā)了聲名狼藉的 NT 藍(lán)屏死機(jī)( Blue Screen Of Death, BSOD ) , 你可以選擇保存崩潰前的內(nèi)存映像到一個(gè)文件中 , 在重新啟動(dòng)后 , 檢查這個(gè)崩潰轉(zhuǎn)儲(chǔ)( Crash Dump )文件 。這項(xiàng)技術(shù)通常被叫做 post mortem (事后檢查)在拉丁文中 , post mortem 意思是“ after death ” 。這種方式是本書(shū)首選方法之一 。在這里 , 我們的主要任務(wù)是研究系統(tǒng)內(nèi)存 , 在大多數(shù)情況下 , 內(nèi)存數(shù)據(jù)是來(lái)自還在工作的系統(tǒng)或者來(lái)自系統(tǒng)崩潰前內(nèi)存的一個(gè)快照( snapshot )都并不重要 。然而 , 一些有趣的信息則需要通過(guò)內(nèi)核模式的驅(qū)動(dòng)程序深入正在工作的系統(tǒng)的內(nèi)部才能觀察到 , 這一主題被保留在后面的章節(jié)中 。

推薦閱讀