如題:
假如有一個函數(shù),從用戶態(tài)進入內核態(tài),然后從內核態(tài)調用了另外一個用戶態(tài)函數(shù)
如何跟蹤觀察,從內核態(tài)的哪個地方調用了用戶態(tài)函數(shù)。怎么下斷點觀察呢?
用windbg
要在 WINDBG 中下斷點,您可以使用 bp 命令。例如,如果您想為函數(shù) foo 設置斷點,可以在 WINDBG 的命令提示符下輸入以下命令:
bp foo
如果您想為內核態(tài)函數(shù)設置斷點,可以在函數(shù)名前面加上 nt! 前綴。例如,如果您想為內核態(tài)函數(shù) bar 設置斷點,可以在 WINDBG 的命令提示符下輸入以下命令:
bp nt!bar
設置完斷點后,您可以使用 g 命令啟動程序的執(zhí)行。當程序執(zhí)行到斷點處時,WINDBG 將暫停程序的執(zhí)行,并進入交互式調試模式。您可以在交互式調試模式下使用 k 命令來查看調用堆棧,從而了解從內核態(tài)調用用戶態(tài)函數(shù)的具體過程。
例如,如果您想查看從內核態(tài)函數(shù) foo 調用用戶態(tài)函數(shù) bar 的過程,可以在 WINDBG 的命令提示符下輸入以下命令:
bp nt!foo