Windows核心除錯實驗方法

2021-09-30 15:38:06 字數 2927 閱讀 9017

如果需要通過實驗來了解

windows

作業系統,免不了要

進行核心除錯,這邊文章把一些核心除錯途徑和方法羅列下。

windows 8 enterprise+ hypher v

vm - 2003 sp2

vm - 2008 r2

實驗用到的工具主要是除錯工具

windbg

,進行核心級的除錯,如何向檢視系統核心的情況,一般有四種方式,

windbglocal debug

,需要更改機器啟動設定,重啟機器。

livedebug

,需要準備兩台機器,從一台通過除錯工具連線到目標機器來除錯目標機器。

livekd

,可以幫助我們在本機或者

vm上面直接除錯。

kerneldump

,通過抓取核心

dump

來檢視記憶體狀態。

windbg

的安裝包包含在

windows wdk

或sdk

中,在安裝

sdk的過程中選擇

debug tool for windows

選項,sdk

會安裝windbg。

安裝成功後,非常關鍵的一步是配置

symbol(

符號表)

快取和網路位址,預設的路徑為

srv*your local symbolfolder*

需要設定使用者環境變數

_nt_symbol_path =srv*your local folder for symbols*

管理員啟動命令列

bcdedit /debug on

管理員啟動

windbg 選擇

file - kernel debug - local

livekd

允許我們不需要另外一台物理機就可以進行核心除錯,所以我實驗的過程中大多數時候都會用

livekd

來實現,只是在特殊的查詢可能要通過抓

kernel dump

的形式來演示,(因為

livekd

不能訪問硬體,所以硬體相關的命令在

livekd

中得不到返回結果)。

livekd

如果你的

windbg

安裝目錄為預設目錄的話,

livekd

可以自動找到相應的路徑,否則的話你需要將

livekd

拷貝到windbg

的安裝目錄下。

local machine

本機除錯直接通過管理員許可權執行命令列,轉到

livekd

所在的目錄,執行

也可以直接除錯

hypher-v的vm

虛擬機器,通過

livekd

加引數-hvl

列出所有的

hypher-v

虛擬機器名和

guid

,然後選擇要除錯的虛擬機器執行

livekd

加引數-hv

後面接虛擬機器名或

guid

來啟動除錯。

抓核心dump

的方式很多,

dump

也有三種型別可供選擇,

small memory dump

kernel memory dump

complete memory dump

先來進行一些通用的配置。

確定抓取

dump

的型別,一般我實驗只是演示檢視,可以選擇自動的方式。

確定dump檔案寫入的路徑有足夠的硬碟空間,dump的大小取決於dump的型別與記憶體使用量,如果選擇自動的話你需要保證有比記憶體大小大的硬碟空間。

notmyfault

這是最簡單的方式,通過軟體觸發中斷來生成dump檔案。

執行命令列轉到notmyfault所在的路徑下,執行命令notmyfault.exe /crash

系統藍屏,重啟,dump就生成在你配置的路徑下。預設為c:\windows\memory.dmp

鍵盤中斷

如果你用ps/2鍵盤,修改登錄檔

找到以下登錄檔子項:

hkey_local_machine\system\currentcontrolset\services\i8042prt\parameters

新增以下登錄檔項:

name :crashonctrlscroll

data type: reg_dword

value :1

如果使用 usb 鍵盤,必須建立 crashonctrlscroll 登錄檔項。

hkey_local_machine\system\currentcontrolset\services\kbdhid\parameters

新增以下登錄檔項:

name :crashonctrlscroll

data type: reg_dword

value :1

接下來,按住右邊ctrl鍵並且同時按兩次scrolllock鍵,系統藍屏重啟,dump生成在配置目錄下。

其他方式

核心除錯方法

跟普通應用程式一樣,列印資訊是最直接的除錯手段,通過列印資訊來獲得核心執行的情況和狀態。功能 通過控制台把核心資訊按照日誌級別列印出來。檢視當前的系統的列印等級 cat proc sys kernel printk 7 4 1 7這裡四個引數的意義 如下 7 當前控制台命令級別,只要小於這個的命令級...

機器學習實驗方法與原理

總共n個資料,假設為2,每次訓練集大小為n 2,每次訓練的資料量會偏小,取平均值後,由於每次訓練的資料量比較小,最終學習輸出的模型會不能很好的代表樣本的分布 欠擬合 換句話說就是偏差大。或者這麼理解,由於k折交叉驗證是使用k次訓練的結果取平均值來進行 的,如果只有兩折交叉驗證,每次對訓練集的 結果是...

Windows核心程式設計(二)核心驅動執行,除錯

由於windows數字簽名的原因,沒有簽名或者使用測試簽名的都不能放到64位系統上執行。兩個解決辦法。一 將系統設定為除錯模式 二 關閉系統的驅動簽名校驗。服務管理器 管理系統上的所有服務,建立 註冊 修改 啟動服務。所以我們編寫程式的時候,首先要開啟服務管理器。其api為 sc handle wi...