Отладка Lua скриптов

HardMan-Developer

Новичок
4 Июл 2021
2
1
В официальной документации от valve есть вот такой гайдецкий https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Debugging_Lua_scripts
Вопрос, кто-нибудь пользовался этим. Я попробовал подключить все по гайду. Но хоть отладчик и подключается к VM но точки останова не работают, хотя по идее должны (Об этой фиче даже valve говорят)
Причем не понятно к какому именно интегрированному отладчику нужно подключаться client или server?
P.S. Единственное объяснение что я нашел, это то что в доте такая фича не прокатит ибо при срабатывании точки останова должен замораживаться event loop (А если весит дота то и тулы в воркшопе тоже зависнут).
 
  • Нравится
Реакции: kain

kain

Активный
2 Окт 2015
125
63
steamcommunity.com
Проект
GreenCircleTD
Вопрос, кто-нибудь пользовался этим
пользовался, все как ты и сказал:
подключается - In VConsole2, type "script_attach_debugger" to debug the server VM, or "cl_script_attach_debugger" to debug the client VM , у тебя есть клиент/сервер код (второго должно быть в разы больше) а что тестить/проверять выбираешь сам. (подключившись к клиенту, то что работает в сервере никак не отобразиться в дебагере - вроде все логично).
точки останова не воркают.
в Eclipse для меня проблема была это только как настроить lua файлы т.е. что бы в нем можно было работать с дотовскими, но походу IDE (Eclipse) умеет только в чистый lua , и дотовский наполовину будет красным (типа синтаксических ошибок) как ему подсунуть api доты хз. Так же дебагер по инструкции надо куда то в аддон размещать - очередное замусоривание папки аддона.
глобальная переменная _G доступна из IDE - но пользоваться крайне не удобно (не осилил поиск их), просто огромнная таблица... па пару тысяч строк, если не десятков.

в итоге у нас свой дебагер в рамках консоли, с последующим логированием на сервер.
PS а еще пользуюсь VSCODE еще 1 довод не в пользу Eclipse.
 

kain

Активный
2 Окт 2015
125
63
steamcommunity.com
Проект
GreenCircleTD
Я думаю там имеется ввиду локальный сервер.
нет, там имеется ввиду какой код ты хочешь дебажить. исполненный в client.dll или server.dll.
Valve.API :
IsServerbool IsServer()Returns true if this is lua running from the server.dll.
IsClientbool IsClient()Returns true if this is lua running from the client.dll.

можешь сам проверить через isServer() isClient(), подключаясь к разным будешь получать дебаг только одной из DLL. В консоли доты оба будут принта.
это размести в addon_game_mode.lua
Lua:
function Activate()
    if IsServer() then
        print("DEBUG [Server]: ")
    end
end
а это размести в addon_init.lua
Lua:
if IsClient() then
    print("DEBUG [Client]: ")
end

PS тоже самое касается всевозможных команд для консоли. Например, списки ентити могут в одном месте показывать 100 штук, а на деле ты знаешь что их больше или что нет нужных тебе. т.к. команды исполняются в разном окружении.
 
Реклама: