ViragDevTool
World of Warcraft Debugger developer addon
Install / Use
/learn @varren/ViragDevToolREADME
This addon should work after small fixes, but i don't have time to maintain it.
So you can use brittyazel maintained version/fork/rewrite DevTool, Curseforge , Wago.
ViragDevTool Info
ViragDevTool is Lua World of Warcraft addon for addon-developers. Functionality is similar to a debugger.
This addon can help new developers to understand WoW API. Main idea is to examine WoW API or your addon's variables in table-like UI. Much easier to use then default print or chat debug
<a href="http://www.youtube.com/watch?feature=player_embedded&v=KWC5QnATlwE " target="_blank"><img src="http://img.youtube.com/vi/KWC5QnATlwE/0.jpg" alt="Video Demo" width="400" height="200" border="10" /></a>
How To Use
Main (and the only) function you can use is ViragDevTool_AddData(data, "some string name"):
--- Adds data to ViragDevTool UI list to monitor
-- @param data (any type)- is object you would like to track.
-- Default behavior is reference and not object copy
-- @param dataName (string or nil) - name tag to show in UI for you variable.
-- Main purpose is to give readable names to objects you want to track.
function ViragDevTool_AddData(data, dataName)
...
end

Lets suppose you have MyModFN function in yours addon
function MyModFN()
local var = {}
... some code here
ViragDevTool_AddData(var, "My local var in MyModFN")
end
This will add var as new row in ViragDevTool UI HybridScrollFrameTemplate list
For example
ViragDevTool_AddData(_G, "_G")
Output:

| Id(Row in list) | Type | Data Name | Data Value | | ----------------- | ------------- | ---------- | -----------------------|
Here is how i use ViragDevTool_AddData:
--define print fn so we can easily turn it off
function MyOtherAddon_Print(strName, tData)
if ViragDevTool_AddData and MyOtherAddon.kbDEBUG then
ViragDevTool_AddData(tData, strName)
end
end
-- use this function all over my code instead of print
MyOtherAddon_Print("MyOtherAddon", MyOtherAddon) -- sends object to UI
How to use sidebar:
There are 3 tabs in sidebar and text field has different behavior in each tab.
-
In \vdt history tab it is just easy way to call
/vdt ...for example you can printfind Viragand it is the same as printing/vdt find Viragin chat -
In Events tab textfield can only use
eventnameoreventname unitand this is the same as/vdt eventadd eventnameor/vdt eventadd unitwhere eventname is Blizzard API event(http://wowwiki.wikia.com/wiki/Events_A-Z_(Full_List)) string name For example:UNIT_AURA playerin textbox is the same as/vdt eventadd UNIT_AURA playerin chat
if unit then f:RegisterUnitEvent(event, unit)
else f:RegisterEvent(event) end

- In Fn Call Log tab you can type
tableName functionNameinto textfield and it will try to find_G.tableName.functionNameand if this field is a function it will be replaced with logger function like this:
tParent[fnName] = function(...)
ViragDevTool:Add({ ... }) -- will add args to the list
local result = { savedOldFn(...) }
ViragDevTool:Add(result) -- will add return value to the list
return unpack(result)
end

How to use function arguments:
You can specify coma separated arguments that will be passed to the function.
Can be string, number, nil, true/false and table
to pass table you have to specify prefix t= so lets suppose i want to pass ViragDevToolFrame as a argument, then the string has to be t=ViragDevToolFrame
Demo1: FN Call Args: t=Frame, 12, a12 => someFunction(_G.Frame (table) , 12 (number), a12 (string))
Demo2: FN Call Args: t=Frame.Frame2.Frame3 => someFunction(_G.Frame.Frame2.Frame3 (table))
/CMD
- /vdt - toggle ui
- /vdt help - for everything else
Other functionality
-
Clicking on table name will expand and show its children
-
Clicking on function name will try to call the function. WARNING BE CAREFUL
-
If table has WoW API
GetObjectType()then its type will be visible in value column -
Can monitor WoW API events
-
Can log function calls: their input args and return values
-
Note: Strings in value column have no line brakes
TODO list:
ViragDevTool is in beta so there is lots of stuff to add and tune.
- Create dynamic text color and size chooser (probably not everyone likes SystemFont_Small)
- Add filters by object name and type
Not important:
- Add predefined buttons for every WoW API (just like _G)
- Add function args info and description from mapping file
- Add object deep copy option
How to contribute
For now this addon will be updated only when i need certain feature in my other addon's development
Preferred option is to use Github issue tracker if you have some todos, bugs, feature requests, and more. https://github.com/varren/ViragDevTool/issues
Can also use Curse comments board http://mods.curse.com/addons/wow/varrendevtool
Inspired by Rover addon from Wildstar http://mods.curse.com/ws-addons/wildstar/220043-rover
ViragDevTool is Rover for WoW
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
