У меня есть приложение на С++ (для OS X), которое вызывает lua как язык сценариев. Я запускаю большое количество этих приложений (100), и они могут запускаться в течение очень долгого времени (дней или недель).
Иногда происходит сбой. И когда он падает, он оставляет мне прекрасный основной файл.
Я могу открыть этот основной файл в gdb и найти, где приложение сбой. Я могу пройти стек вызовов и найти экземпляр переменной lua_State. Моя проблема в том, что я хотел бы посмотреть, как выглядит стек вызовов lua на на этот раз...
Имейте в виду, что, поскольку это ядро, у меня нет доступа к вызовам функций C, что исключает некоторые из обычных способов отладки сценариев lua.
Мне нравится избегать добавления ручных трасс через отладочные крючки, так как меня беспокоят дополнительные штрафы за производительность и сложность.
Как я могу пересечь внутренние структуры lua, чтобы получить информацию о стеке вызовов?