AutoHotkey腳本的4種除錯方法(AHK #5)

吃燒餅沒有不掉芝麻的,想寫好程式,讓程式依你所想運行,就必須善用除錯工具。

除錯方法1: 用MsgBox

最簡單的AutoHotkey除錯,當然就是用MsgBox把變數顯示在對話窗裡來確認正確性了。

例如:

;// 把目前視窗設為置頂
!t:: WinSet, AlwaysOnTop, , A

#c::
  WinGetClass, sClass, A  ;//取出目前視窗的類別
  WinGetTitle, sTitle, A  ;//取出目前視窗的標題
  sNow = %A_NOW%          ;//取出目前日期時間
  MsgBox 類別=%sClass%, 標題=%sTitle%, 目前時間=%sNow%
  if (sClass = "CabinetWClass") {
    MsgBox 檔案總管裡按 Win+C
  } if (sClass = "Chrome_WidgetWin_1") {
    MsgBox 網頁標題是: %sTitle%
  } else {
    MsgBox 目前時間是: %sNow%  
  }
  return

除錯方法2: 用ListVars與Pause

ListVars讓AutoHotkey視窗顯示全局變數供我們檢視。

#c::
  WinGetClass, sClass, A  ;//取出目前視窗的類別
  WinGetTitle, sTitle, A  ;//取出目前視窗的標題
  sNow = %A_NOW%          ;//取出目前日期時間
  ;MsgBox 類別=%sClass%, 標題=%sTitle%, 目前時間=%sNow%
  ListVars
  Pause
  if (sClass = "CabinetWClass") {
    MsgBox 檔案總管裡按 Win+C
  } if (sClass = "Chrome_WidgetWin_1") {
    MsgBox 網頁標題是: %sTitle%
  } else {
    MsgBox 目前時間是: %sNow%  
  }
  return

除錯方法3: 用OutputDebug

使用OutputDebug把除錯訊息導向到系統除錯檢視器。系統除錯檢視器可以到DebugView - Windows Sysinternals | Microsoft Docs下載,解開後直接執行 dbgview.exe。下列範例中的OutputDebug會將訊息顯示在DebugView視窗裡。

#c::
  WinGetClass, sClass, A
  WinGetTitle, sTitle, A
  sNow = %A_NOW%
  OutputDebug, 除錯輸出。類別=%sClass%, 標題=%sTitle%, 目前時間=%sNow%

  if (sClass = "CabinetWClass") {
    MsgBox 檔案總管裡按 Win+C
  } if (sClass = "Chrome_WidgetWin_1") {
    MsgBox 網頁標題是: %sTitle%
  } else {
    MsgBox 目前時間是: %sNow%  
  }
  return

除錯方法4: 交互式除錯步驟

AutoHotkey已經提供了DBGp協定,依下列步驟執行就能建立交互式的除錯,可以逐步測試程式的正確性:

  1. 執行 AutoGUI.ahk
  2. 載入要測試的腳本(如test2.ahk)後按〔Execute〕
  3. 由AutoGUI功能表 【Debug】→【Start Debugging】
  4. 點擊行號右側以設定中斷點
  5. 按【Debug】→【Continue】
  6. 以下列指令啟動除錯Server程式:
c:\Program Files\AutoHotkey\AutoHotkey.exe /Debug test2.ahk

接著按下要測試的熱鍵,程式遇到中斷點就會停下來,我們可以用Step Over或Step Into等來逐步測試。

詳細說明與實例操作影片

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *