.step_filter (设定步骤筛选)
.step_filter命令會建立追蹤時略過 (略過) 函式清單。 這可讓您追蹤程序代碼,並只略過某些函式。 它也可以在來源模式中使用,以控制在一行上有多個函式呼叫時逐步執行。
.step_filter "FilterList"
.step_filter /c
.step_filter
參數
“FilterList”
指定要逐步執行之函式相關聯的符號。 FilterList 可以包含任意數目的文字模式,以分號分隔。 這些模式的每一個都可能包含各種通配符和規範;如需詳細資訊 ,請參閱字串通配符語法 。 符號符合下列其中一個模式的函式,會在追蹤期間逐步執行。 每次使用 「FilterList」 時,都會捨棄任何先前的篩選條件清單,並以新的清單完全取代。
/C
清除篩選清單。
環境
項目 | 描述 |
---|---|
模式 | 使用者模式、核心模式 |
目標 | 即時、損毀傾印 |
平台 | 全部 |
備註
如果沒有任何參數, .step_filter 會顯示目前的篩選清單。
一 般而言,追蹤 命令 (t 或windbg 偵錯 | 逐步執行] 追蹤函式調用。 不過,如果與所呼叫函式相關聯的符號符合 FilterList 所指定的模式,則函式會逐步解說,就像使用 p) 之類的步驟命令 (一樣。
如果指令指標位於篩選清單中所列的程式代碼內,任何追蹤或步驟命令都會跳出此函式,例如 gu 命令或 WinDbg 跳出 按鈕。 當然,此篩選會防止這類程序代碼在第一個位置追蹤,因此只有在您變更篩選或叫用斷點時,才會發生此情況。
例如,下列命令會導致追蹤命令略過所有 CRT 呼叫:
.step_filter "msvcrt!*"
當您在來源模式中偵錯時, .step_filter 命令最有用,因為單一來源行上可能會有多個函式呼叫。 p 和 t 命令無法用來分隔這些函數調用。
例如,在下列這一行中, t 命令會逐步執行 GetTickCount 和 printf,而 p 命令會逐步執行這兩個函式呼叫:
printf( "%x\n", GetTickCount() );
.step_filter 命令可讓您篩選掉其中一個呼叫,同時仍追蹤到另一個呼叫。
因為函式是以符號識別,所以單一篩選可以包含整個模組。 這可讓您篩選掉架構函式,例如 Microsoft Foundation Classs (MFC) 或 Active Template Library (ATL) 呼叫。
在元件模式中偵錯時,每個呼叫都位於不同的行上,因此您可以選擇要逐行執行或追蹤行。 因此 ,.step_filter 在元件模式中並不非常實用。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應