2016-02-16 2 views
0

Я пишу большой проект с использованием C++. В этом проекте некоторые вызовы lua будут вызываться для реализации функций. Теперь я хочу установить точки останова в сценариях lua, но я не знаю, как это сделать. Я бы предпочел что-то вроде «pdb.set_trace()» как для python. Любая идея была бы оценена. Заранее спасибо.Как установить точку останова в сценариях lua

+1

У Lua нет встроенного отладчика. Вам нужно будет найти отладчик Lua (не спрашивайте о SO, это вне темы) и научитесь использовать этот конкретный. –

+0

Существует рудиментарный отладчик, вызываемый [debug.debug()] (http://www.lua.org/manual/5.3/manual.html#pdf-debug.debug). –

+0

Лучшим способом было бы использовать Lua IDE, поддерживающую отладку и запись модульных тестов Lua вокруг ваших функций. См./Добавьте тег [информация] (http://stackoverflow.com/tags/lua/info). –

ответ

1

К сожалению, у Lua нет встроенного отладчика, и многие параметры отладки, доступные вам в автономном режиме Lua, недоступны во встроенном сценарии Lua.

Один из способов решения этой проблемы - отлаживать «скрипт» - просто использовать печать (независимо) и печатать (debug.traceback()) по всему коду, возможно, включен или выключен глобальным DEBUG (возможно, установленный DEBUG #define в коде C++), так что сообщения не будут выбрасываться в производственные исполняемые файлы.

Кроме того, при использовании функции lua_pcall(), если функция имеет ошибку, она вызывает debug.traceback() и помещает результирующую строку в стек. Вы можете получить его с:

lua_pushcfunction(L, c_function_name); 
lua_pushnumber(L, 5.3); 
if (lua_pcall(L, 1, 0, 0) != 0) lua_error(L); 

A Примечание: все это не работает, если вы не откроете библиотеку отладки первых, используя luaopen_debug(L); где L ваш lua_State*.

Если вам действительно нужна интерактивная отладка, так как @Colonel Thirty Two сказал, вы должны найти интерактивную библиотеку отладки; Я уверен, что один из них доступен, но это выходит за рамки вопроса StackOverflow.

+0

большое спасибо за ваше четкое объяснение! – gladys0313

Смежные вопросы