2
我有調試時發現的地址,我懷疑它是屬於某個進程的某個線程的調用堆棧。在Windbg內核調試期間將地址匹配到堆棧
找出它是哪個線程的最好方法是什麼(或者這是我的假設是錯誤的)?
P.S.我可以重複使用!process
,然後使用.process
和!thread
,但必須有更好的方法。
P.S.S.不幸的是,我無法在用戶模式調試時重現這種情況。
在此先感謝。
我有調試時發現的地址,我懷疑它是屬於某個進程的某個線程的調用堆棧。在Windbg內核調試期間將地址匹配到堆棧
找出它是哪個線程的最好方法是什麼(或者這是我的假設是錯誤的)?
P.S.我可以重複使用!process
,然後使用.process
和!thread
,但必須有更好的方法。
P.S.S.不幸的是,我無法在用戶模式調試時重現這種情況。
在此先感謝。
首先,如果您有符號加載,您可以使用ln <address>
從地址中收集一些信息。從那裏,猜測涉及哪個進程/線程應該不難。
如果這樣做並不符合您的需求,您可以繼續使用暴力破解方法。搜索的最佳選擇是以更可搜索的格式自動獲取調用堆棧。以下內容將全部寫入一個文件,您可以使用您最喜愛的文本編輯器更輕鬆地搜索文件。
.logopen c:\stacks.txt; !for_each_process "!process @#Process; ~*kv1000"; .logclose
這將需要一段時間,所以去喝點咖啡。如果你感到幸運的,你可以直接從WinDbg,從而使搜索輸出:
.shell -ci "!for_each_process \"!process @#Process; ~*kv1000\"" findstr "deadbeef"
希望這樣做你想要什麼,或者(和你正在尋找的地址替換DEADBEEF)至少可以讓你指出一個解決方案。
'你的意思是'[地址]屬於調用堆棧'?也許你打算說地址是在分配給堆棧的段中? –