IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類(lèi)|軟件專(zhuān)題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁(yè)操作系統(tǒng)windows → 分析Vista系統(tǒng)和Win7系統(tǒng)的崩潰轉(zhuǎn)儲(chǔ)文件

分析Vista系統(tǒng)和Win7系統(tǒng)的崩潰轉(zhuǎn)儲(chǔ)文件

時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)

  默認(rèn)情況下,Windows配置為當(dāng)系統(tǒng)發(fā)生崩潰時(shí)嘗試自動(dòng)抓取一個(gè)當(dāng)前操作系統(tǒng)的狀態(tài)信息。接下來(lái)我們將討論系統(tǒng)故障,非應(yīng)用程序失敗。Dump選項(xiàng)可以通過(guò)控制面板中的系統(tǒng)工具來(lái)進(jìn)行設(shè)置。我們打開(kāi)系統(tǒng)屬性—高級(jí)選項(xiàng)卡,找到啟動(dòng)和故障恢復(fù),點(diǎn)擊設(shè)置,我們就可以看到Dump文件的相關(guān)配置。當(dāng)系統(tǒng)發(fā)生崩潰時(shí),有3類(lèi)Dump文件可以被捕獲。

  完全內(nèi)存轉(zhuǎn)儲(chǔ):當(dāng)崩潰發(fā)生時(shí),將捕獲整個(gè)物理內(nèi)存的狀態(tài)。此類(lèi)轉(zhuǎn)儲(chǔ)文件大小為內(nèi)存中頁(yè)面文件大小+1MB的文件頭。Windows NT4只支持完全內(nèi)存轉(zhuǎn)儲(chǔ),當(dāng)然這也是Windows Server Systems的默認(rèn)設(shè)置。

  核心內(nèi)存轉(zhuǎn)儲(chǔ):當(dāng)崩潰發(fā)生時(shí),核心內(nèi)存轉(zhuǎn)儲(chǔ)只捕獲物理內(nèi)存中內(nèi)核態(tài)的頁(yè)面文件讀/寫(xiě)數(shù)據(jù)。這只是內(nèi)核態(tài)的轉(zhuǎn)儲(chǔ),并不包括用戶(hù)態(tài)進(jìn)程的頁(yè)面。不過(guò),由用戶(hù)態(tài)進(jìn)程頁(yè)引起系統(tǒng)崩潰是不大可能的,通常都是由內(nèi)核態(tài)引起。核心內(nèi)存轉(zhuǎn)儲(chǔ)中包括:當(dāng)前運(yùn)行進(jìn)程、線(xiàn)程和被加載的驅(qū)動(dòng)等相關(guān)信息。核心內(nèi)存轉(zhuǎn)儲(chǔ)文件大小=操作系統(tǒng)內(nèi)核態(tài)內(nèi)存占用大小+操作系統(tǒng)為驅(qū)動(dòng)程序分配內(nèi)存的大小。

  小內(nèi)存轉(zhuǎn)儲(chǔ):小內(nèi)存轉(zhuǎn)儲(chǔ)(又叫Mini-dump)是一個(gè)64K的轉(zhuǎn)儲(chǔ)文件(64位系統(tǒng)和Windows7里是128K,Vista512K),它包括:終止代碼、參數(shù)和被加載的驅(qū)動(dòng)列表。主要信息為崩潰時(shí)的當(dāng)前進(jìn)程、線(xiàn)程和內(nèi)核堆。

  注意:有的情況下我們需要進(jìn)行完全內(nèi)存轉(zhuǎn)儲(chǔ),手動(dòng)進(jìn)行完全內(nèi)存轉(zhuǎn)儲(chǔ)為程序停止響應(yīng)的排錯(cuò)提供了最為豐富的信息。因?yàn)楫?dāng)程序Hang住時(shí),我們需要查看用戶(hù)態(tài)進(jìn)程、死鎖等等信息。不過(guò),當(dāng)你在選擇捕獲哪種Dump文件時(shí),一定要考慮好捕獲出來(lái)的文件大小。如上所述,完全內(nèi)存轉(zhuǎn)儲(chǔ)文件大小會(huì)是在物理內(nèi)存大小的基礎(chǔ)上+1MB。(筆者8GB內(nèi)存,再加1MB?植腊……)

  前面我們回顧了3種類(lèi)型的Dump文件,實(shí)則在日常的工作中核心內(nèi)存轉(zhuǎn)儲(chǔ)是我們系統(tǒng)崩潰和Bug檢查時(shí)最常用到的。請(qǐng)記住,核心內(nèi)存轉(zhuǎn)儲(chǔ)文件大小僅基于內(nèi)核態(tài)內(nèi)存占用和驅(qū)動(dòng)內(nèi)存占用。(在有更多內(nèi)存的系統(tǒng)上,Dump文件過(guò)大是正常的。)目前我們還無(wú)法精準(zhǔn)的計(jì)算核心內(nèi)存轉(zhuǎn)儲(chǔ)文件大小,你可以嘗試手動(dòng)配置核心內(nèi)存轉(zhuǎn)儲(chǔ)來(lái)查看頁(yè)面文件是否足夠大。對(duì)于設(shè)置最小的核心內(nèi)存轉(zhuǎn)儲(chǔ)大小我們有一定的指導(dǎo)方針,但對(duì)于最大值目前還沒(méi)辦法:

  如果你擔(dān)心頁(yè)面文件設(shè)置過(guò)小,無(wú)法很好的捕獲核心轉(zhuǎn)儲(chǔ),我們唯一的辦法就是通過(guò)KB244139所描述的方式使用CrashOnCtrlScroll方法造成手動(dòng)崩潰。系統(tǒng)重啟之后,我們可以手工查看Dump文件大小。另一種方法是在啟動(dòng)分區(qū)上手動(dòng)設(shè)置2GB+1MB的頁(yè)面文件大小(32位系統(tǒng)),這是因?yàn)?2位操作系統(tǒng)內(nèi)核態(tài)最大地址空間就是2GB。

  除了配置正確的頁(yè)面文件大小之外,我們也需要確保有足夠的磁盤(pán)空間讓Dump文件能夠被正確的寫(xiě)入。與頁(yè)面文件用來(lái)捕獲Dump不同,Dump文件可以被寫(xiě)入其它的本地分區(qū)。在保存多個(gè)Dump文件時(shí),請(qǐng)取消選擇"覆蓋任何現(xiàn)有文件"。不過(guò)請(qǐng)記住,這會(huì)給剩余的磁盤(pán)空間造成很大的壓力。

  下面我們來(lái)看Dump文件是如何被產(chǎn)生的。當(dāng)系統(tǒng)啟動(dòng)時(shí),會(huì)到注冊(cè)表HKLMSystemCurrentControlSetcontrolCrashControl 讀取崩潰轉(zhuǎn)儲(chǔ)選項(xiàng)。所有在圖形界面所做的操作都會(huì)修改如下注冊(cè)表值:

  將事件寫(xiě)入系統(tǒng)日志=LogEvent

  自動(dòng)重新啟動(dòng)= AutoReboot

  寫(xiě)入調(diào)試信息= CrashDumpEnabled

  轉(zhuǎn)儲(chǔ)文件= DumpFile

  覆蓋任何現(xiàn)有文件= Overwrite

  如果你的系統(tǒng)超過(guò)2GB內(nèi)存,在圖形界面中你將不會(huì)看到完全內(nèi)存轉(zhuǎn)儲(chǔ)選項(xiàng)。其原因在KB274598中進(jìn)行了描述。但我們可以通過(guò)將HKLMSystemCurrentControlSetControlCrashControl下的CrashDumpEnabled值設(shè)置為1來(lái)強(qiáng)制啟用它(改這個(gè)值在圖形界面中完全內(nèi)存轉(zhuǎn)儲(chǔ)仍不會(huì)顯示出來(lái))。如果你需要完全內(nèi)存轉(zhuǎn)儲(chǔ)來(lái)做更詳盡的排錯(cuò),也可以考慮使用Boot.ini中的MAXMEM開(kāi)關(guān)將32位操作系統(tǒng)所使用的內(nèi)存限制在2GB或更少(可以參考KB108393),此時(shí)系統(tǒng)就會(huì)將完全內(nèi)存轉(zhuǎn)儲(chǔ)選項(xiàng)顯示來(lái)。

  現(xiàn)在回到Dump文件如何被產(chǎn)生這個(gè)話(huà)題。一旦轉(zhuǎn)儲(chǔ)功能被啟用,操作系統(tǒng)會(huì)自動(dòng)寫(xiě)一個(gè)以"Dump_"開(kāi)頭的磁盤(pán)迷你端口驅(qū)動(dòng)到啟動(dòng)分區(qū),并校驗(yàn)與創(chuàng)建 Dump文件相關(guān)的所有組件。包括:磁盤(pán)迷你端口驅(qū)動(dòng)、寫(xiě)入Dump文件的I/O管理函數(shù)和啟動(dòng)分區(qū)的頁(yè)面文件。最終所得的校驗(yàn)結(jié)果會(huì)被保存起來(lái),每當(dāng)系統(tǒng)啟動(dòng)時(shí)KeBugCheck函數(shù)會(huì)重新進(jìn)行校驗(yàn)并與之前的結(jié)果相比對(duì)。如果校驗(yàn)結(jié)果不匹配,將不會(huì)有Dump文件被寫(xiě)入磁盤(pán)(因?yàn)橛衅茐拇疟P(pán)數(shù)據(jù)的危險(xiǎn));如果檢驗(yàn)結(jié)果匹配,Dump信息會(huì)被寫(xiě)入已經(jīng)被寫(xiě)到磁盤(pán)啟動(dòng)分區(qū)上的頁(yè)面文件當(dāng)中。文件系統(tǒng)會(huì)被完全繞過(guò),因?yàn)樗灿锌赡苁窃斐杀罎⒌脑蛑弧.?dāng)SMSS.EXE在啟動(dòng)過(guò)程中開(kāi)啟內(nèi)存分頁(yè)時(shí),系統(tǒng)會(huì)仔細(xì)檢查啟動(dòng)分區(qū)頁(yè)面文件當(dāng)中的信息。如果有崩潰信息,這部分頁(yè)面文件就會(huì)被保護(hù)起來(lái)。如果啟動(dòng)過(guò)程中的所有或部分啟動(dòng)分區(qū)頁(yè)面文件不可用,系統(tǒng)會(huì)提示虛擬內(nèi)存過(guò)低(暫時(shí))。啟動(dòng)進(jìn)程執(zhí)行完成之后WINLOGON.EXE會(huì)調(diào)用SAVEDUMP.EXE進(jìn)程從頁(yè)面文件中抽出崩潰信息,并將Dump文件寫(xiě)到磁盤(pán)上。

  在Windows Server 2003上,某些過(guò)程可能會(huì)有不同,請(qǐng)參考KB886429。當(dāng)Server啟動(dòng)之后,Windows會(huì)要求在啟動(dòng)分區(qū)上創(chuàng)建一個(gè)和物理內(nèi)存相同大小的臨時(shí)文件。如果磁盤(pán)空間不足,Dump還是會(huì)生成,不過(guò)會(huì)被系統(tǒng)縮減大小。在創(chuàng)建Dump操作過(guò)程的初期,會(huì)話(huà)管理子系統(tǒng)(SMSS.EXE)就會(huì)介入驗(yàn)證內(nèi)存Dump信息是否有效。如果Dump信息有效,SMSS.EXE會(huì)將Dump文件重命名為Dumpxxx.tmp,進(jìn)而存儲(chǔ)Dumpxxx.tmp到啟動(dòng)分區(qū)并設(shè)置HKLMSystemCurrentControlSetControlCrashControlMachineCrash下的TempDestination和DumpFile值。SAVEDUMP.EXE便會(huì)讀取這2個(gè)值,并在判定文件的有效性之后將Dumpxxx.tmp保存成Memory.dmp。

關(guān)鍵詞標(biāo)簽:Vista

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 windows7虛擬光驅(qū)安裝和使用方法windows7虛擬光驅(qū)安裝和使用方法解決應(yīng)用程序正常初始化(0xc0000135)失敗解決應(yīng)用程序正常初始化(0xc0000135)失敗hosts文件位置以及如何修改hosts文件hosts文件位置以及如何修改hosts文件[聲音故障]XP沒(méi)有聲音,丟失Windows Audi[聲音故障]XP沒(méi)有聲音,丟失Windows Audi

相關(guān)下載

人氣排行 [聲音故障]XP沒(méi)有聲音,丟失Windows Audio服務(wù)(AudioSrv)[警解決Windows 7黑屏的有效方法windows2003中關(guān)于軟路由設(shè)置方法的具體介紹Windows不能在本地計(jì)算機(jī)啟動(dòng)OracleDBConsoleorcl一個(gè)空文件夾刪不掉的解決辦法Windows 7加X(jué)P的局域網(wǎng)搭建與文件共享用Windows命令行實(shí)現(xiàn)自動(dòng)SSH代理Windows提示錯(cuò)誤應(yīng)用程序update.exe