使用Logger.exe
開機記錄器的其中一種方式是執行獨立Logger.exe程式。 這基本上是一個非常小的偵錯工具,只能採用單一目標。 若要執行它,請在命令列中包含目標應用程式的名稱:
logger Target
啟用此動作時,它會載入指定的應用程式,並將程式碼插入目標應用程式中,以跳至會在目標應用程式進程中載入和初始化Logexts.dll的常式。 這稱為「將記錄器插入目標應用程式」。
Logger.exe公用程式和Logexts.dll模組是這個 Logger 車輛的兩個元件。 它們會透過記憶體的共用區段進行通訊,其中包含輸出檔控制碼、目前的類別遮罩,以及記錄輸出緩衝區的指標。
[ 記錄器 (偵錯工具) 會出現一個視窗。 此視窗會顯示記錄器的進度。
變更設定對話方塊
初始化完成且初始顯示完成之後,[ 變更設定 ] 對話方塊隨即出現。 這可讓您設定記錄器設定。 此處說明各種設定:
API 設定
此清單會顯示可用的 API 類別。 將會記錄醒目提示的類別;未醒目提示的類別將不會。 第一次執行記錄器時,所有類別都會反白顯示。 不過,在後續執行時,記錄器會追蹤為指定的目標應用程式選取哪些類別。
如果已停用類別,將會移除該類別中所有 API 的勾點,讓不再有任何效能額外負荷。 COM 勾點不會移除,因為它們無法自動重新啟用。
當您只對程式與 Windows 相關的特定互動類型感興趣時,啟用特定類別就很有用,例如檔案作業。 這會減少記錄檔大小,也會減少記錄器對進程執行速度的影響。
測 井
本節包含 [啟用 ] 和 [ 停用 ] 選項按鈕。 停用記錄會導致所有 API 勾點都遭到移除,以允許程式自由執行。 COM 勾點不會移除,因為它們無法自動重新啟用。
包含/排除清單
本節控制模組包含/排除清單。 通常最好只記錄從特定模組或一組模組進行的函式呼叫。 為了方便進行,記錄器可讓您指定模組包含清單,或者指定模組排除清單。 例如,如果您只想要記錄來自一或兩個模組的呼叫,您會使用包含清單。 如果您想要記錄所有模組發出的呼叫,但模組清單簡短除外,您可以使用排除清單。 系統一律會排除模組Logexts.dll和Kernel32.dll,因為不允許記錄器自行記錄。
清除緩衝區
此按鈕會排清目前的輸出緩衝區。 作為效能考慮,只有在輸出緩衝區已滿時,才會將記錄輸出排清到磁片。 根據預設,緩衝區為 2144 個位元組。
由於緩衝區記憶體是由目標應用程式所管理,因此如果目標應用程式中發生存取違規或其他一些無法復原的錯誤,則不會自動將緩衝區寫入磁片上的記錄檔。 在這種情況下,您應該嘗試啟動目標應用程式的視窗,並按 F12 來取得此對話方塊,然後按 [排清緩衝區]。 如果未這麼做,最近記錄的函式可能不會出現在記錄檔中。
去
這會導致目標應用程式開始執行。
執行目標應用程式
選擇設定之後,請選取 [ 移至]。 對話方塊將會關閉,而且目標應用程式將會開始執行。
如果您讓目標應用程式的視窗處於作用中狀態,然後按 F12,它會分成 Logger。 這會導致目標應用程式凍結,並重新出現 [ 變更設定 ] 對話方塊。 您可以視需要變更設定,然後按 [移至 ] 繼續執行。
只要您想要,您就可以讓目標應用程式執行。 如果它正常終止或因為錯誤而終止,記錄將會停止且無法重新開機。
當您想要結束時,請選取 [ 檔案] |結束 並選取 [是]。 如果目標應用程式仍在執行中,將會終止。
Logger.exe的限制
當您透過 Logger.exe 工具執行 Logger 時,它只會建立一個輸出檔 -- .lgv 檔案。 不會寫入任何文字檔。 不過,將會建立大小為零的.txt檔案;這可能會覆寫先前偵錯工具所寫入的文字記錄。
輸出檔案一律會放在桌面的 LogExts 子目錄中;無法變更此位置。
如果您透過偵錯工具執行 Logger 並Logexts.dll,則不適用這些限制。