在调试脚本时,您通常需要知道变量的值才能准确了解发生了什么。使用MsgBox输出变量来解决这个问题既烦人又低效。
有没有可以帮助我调试变量的函数?
我希望它写下我所有的局部变量、它们的名称和相应的值以及正在执行的当前过程的名称到一个 ini 文件中。是否有可以实时提供此功能的调试工具?
过程的名称可能很难做到,但有没有办法至少可以枚举和写掉所有局部变量?
在调试脚本时,您通常需要知道变量的值才能准确了解发生了什么。使用MsgBox输出变量来解决这个问题既烦人又低效。
有没有可以帮助我调试变量的函数?
我希望它写下我所有的局部变量、它们的名称和相应的值以及正在执行的当前过程的名称到一个 ini 文件中。是否有可以实时提供此功能的调试工具?
过程的名称可能很难做到,但有没有办法至少可以枚举和写掉所有局部变量?
看看ListVars 命令。它列出了所有变量。
您还可以使用以下方法获取更广泛的信息:
MsgBox, % GetAhkStats("lines")
MsgBox, % GetAhkStats("variables")
MsgBox, % GetAhkStats("hotkeys")
Stat1 := GetAhkStats("history")
MsgBox, %Stat1%
Return
a::a
b::b
c::c
d::d
GetAhkStats(xxSection="", xxUseWindow=99, xxDestroyAfter=1)
{
xxSectionN = Lines|Variables|Hotkeys|History
If xxSection=
xxSection = History
Loop, Parse, xxSectionN, |
IfInString, A_LoopField, %xxSection%
xxSection = %A_Index%
DetectHiddenWindows, On
SetTitleMatchMode, 2
Gui, %xxUseWindow%:Show, Hide
xxHidWin := WinExist(A_ScriptFullPath " - AutoHotkey v")
xxOldpar := DllCall("GetParent", "UInt", xxHidWin)
DllCall("SetParent", "UInt", xxHidWin, "UInt", (GuiGetHWND("", xxUseWindow)))
WinMenuSelectItem, ahk_id %xxHidWin%,, View, %xxSection%&
Loop {
Sleep, 50
ControlGetText, xxOut1, Edit1, ahk_id %xxHidWin%
If xxOut1<>
break
}
WinHide, ahk_id %xxHidWin%
DllCall("SetParent", "UInt", xxHidWin, "UInt", xxOldpar)
If (xxDestroyAfter)
Gui, %xxUseWindow%:Destroy
Return, xxOut1
}
GuiGetHWND(xxClassNN="", xxGUI=1)
{
If (xxGUI)
Gui, %xxGUI%:+LastFound
xxGui_hwnd := WinExist()
If xxClassNN=
Return, xxGui_hwnd
ControlGet, xxOutputVar, Hwnd,, %xxClassNN%, ahk_id %xxGui_hwnd%
Return, xxOutputVar
}
listvars 对我有用。