В моей компании есть программа, которая использует Lua, встроенную в ее среду выполнения, загружая файлы .lua
с диска и выполняя определенные в них функции повторно.
Есть ли способ подключиться к выполняемому процессу и установить точки останова в моих файлах .lua
? (Я бы принял либо отладку командной строки в стиле gdb как часть дистрибутива Lua, либо, возможно, стороннюю среду IDE, которая обеспечивает точки доступа с графическим интерфейсом, подобные Visual Studio).
Или это то, что я прошу абсолютно бессмысленно и невозможно, учитывая природу среды выполнения, загружая случайные файлы с диска?
Изменить. Похоже, это не бессмысленно, учитывая, что функция Lua debug.getinfo()
может определять исходный файл для данной функции и debug.sethook()
позволяет обратный вызов для каждой введенной новой строки кода. Таким образом, разумно загружать исходный код с диска и быть в состоянии сказать, когда интерпретатор выполняет определенную строку кода из этого файла. Остается вопрос: как я могу запереть существующий процесс с интерпретатором Lua и ввести собственную функцию трассировки (которая затем может наблюдать за парами номеров файлов и строк и приостанавливать выполнение)?