StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by citRiks »

StackTracePlus @Xer0X — расширенный анализ стека,
дает ПОЛНЫЙ обзор контекста ошибки,
как и любого другого runtime контекстa

https://github.com/dr-dba/far-lua-diagnostics
StackTracePlusPlus-@Xer0X.Lua
(!) Dependencies:
https://github.com/dr-dba/far-lua-general-utils
https://github.com/dr-dba/far-lua-explorer
https://github.com/dr-dba/far-lua-internals

Добрый дедушка @Xer0X предоставил улучшенную модификацию StackTracePlus.
Image
Основное достоинство это полный стэк доступный с помощью LuaExplorer "Advanced" @Xer0X + citRiks.
Предоставляются все локальные и upvalues для каждого уровня.
B aрхиве также есть тестовый скрипт

Он также сообщил, что в оригинальном скрипте не закрывается файл когда ищется определения функции (GuessFunctionName(..))

Еще вот, оригинальный скрипт изза нового УТФ8 кажется что не работал,
точно не могу сказать, я начал использовать новый вариант одновременно с испытаними версий после 5590+.
в том числе и поэтому я перешел на новый насколько я помню.

ЕСТь НОВАЯ НО ЕЩЕ НЕ ВПОЛНЕ ОФОРМЛЕНА ДООФОРМИЛ:
https://github.com/dr-dba/far-lua-diagnostics

приаттаченная здесь ВЕРСИЯ НЕАКТУАЛьНАЯ, остается лишь для справки
Attachments
StackTracePlusPlus-@Xer0X.lua.7z
(5.14 KiB) Downloaded 78 times
Last edited by citRiks on Sat 24 Apr, 2021 12:01, edited 15 times in total.
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

StackTracePlus — расширенный анализ стека

Post by skipik »

citRiks, а добрый дедушка тестирует макросы вообще?
1. В секции установка указано "local STP = (require "StackTracePlusPlus@Xer0X")", а скрипт называется "StackTracePlusPlus-@Xer0X.lua", то есть дефис в имени файла, то нет, уже ругань. Ок, с этим разобрались.
2.
А как быть с этим?
P.S. b5596 x64
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus — расширенный анализ стека

Post by citRiks »

skipik,
извиняюсь, был в категорическом оффлайне
скоро выясню и отпишусь, наверное сегодня вечером
XeR0x - это глобальная таблица которая место хранения вспомогательных функций,
и в силу своей глобальности про нее легко забыть при deployment.
в начале скрипта по моему будет достаточно написать:
locаl Xer0X = {}
и в нее тогда в самом модуле сами добавятся релевантные функции
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus — расширенный анализ стека

Post by citRiks »

skipik, приаттаченo починенное.

ВЕРСИЯ НЕАКТУАЛьНАЯ
ЕСТь НОВАЯ НО ЕЩЕ НЕ ВПОЛНЕ ОФОРМЛЕНА:
https://github.com/dr-dba/far-lua-diagnostics
Attachments
StackTracePlusPlus-@Xer0X.lua.7z
(4.85 KiB) Downloaded 73 times
Last edited by citRiks on Sat 13 Feb, 2021 23:37, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus — расширенный анализ стека

Post by citRiks »

Ann wrote: Sat 13 Feb, 2021 16:05
citRiks wrote: Sat 13 Feb, 2021 14:00 юзеру посылается трейсер (профайлер), и/или усовершентвованный StackTracePlus@Xer0X:
viewtopic.php?f=15&t=9611
и далее в теме по приведённой ссылке ниже находим более свежий трейсер-профайлер:
citRiks wrote: Sun 31 May, 2020 21:27приаттаченo починенное
Во-первых, прошу обратить Ваще внимание на то, что распакованный модуль называется StackTracePlusPlus-@Xer0X.lua (со знаком минус в имени), а в самом же этом файле в инструкции по его установке в строке 28 имя вызываемого модуля указано как StackTracePlusPlus@Xer0X (т.е. без знака минус). И, соответственно, после перезагрузки макросов модуль не обнаруживается.
Во-вторых, после внесения необходимой правки в _macroinit.lua (т.е. после дополнения знака минус в имя модуля) LuaMacro белым по красному ругается при загрузке Фара, если среди макросов есть последняя по времени (вчерашняя) версия Dialog_ReXiZeR.@Xer0X.Lua (с сопутствующими ей модулями): error in error handling
в прынцыпе, в этот новый СтакТрайсПлюс, которые смотрится через ЛуаЭксплорер,
я собираюсь сделать полный дамп вместе (со стэком всех уровней) всего енвайронмента.
Вроде не сложно, но
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus — расширенный анализ стека

Post by citRiks »

Ладно, сейчас размещу в ГитХабе новую версию СтакТрайсПлюса без дампа,
без проверок и QA (вы сами напросились) кроме того что у меня все работает.
А то вдруг и у вас заработает.
https://github.com/dr-dba/far-lua-diagnostics
Дампа нет еще, все остальное есть.
для анализа падения очень и очень помогает, но НЕ-создателю скрипта, без
возможности сделать и отослать дамп, вряд ли сильно поможет.
Нужен новый ЛуаЕскплорер только:
https://github.com/dr-dba/far-lua-explorer

UPD
обновил это минуту назад:
https://github.com/dr-dba/far-lua-general-utils/
https://github.com/dr-dba/far-lua-diagnostics
т.е., если кто вдруг успел скачать прежнее, то перекачайте

UPD 2
и еще раз обновил.
https://github.com/dr-dba/far-lua-general-utils/
в репозитории кстати есть то что нужно в "_макроинит.луа" чтобы было
Last edited by citRiks on Sat 13 Feb, 2021 19:21, edited 2 times in total.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

StackTracePlus — расширенный анализ стека

Post by Ann »

citRiks wrote: Sat 13 Feb, 2021 18:46сейчас размещу в ГитХабе новую версию СтакТрайсПлюса без дампа,
без проверок и QA (вы сами напросились) кроме того что у меня все работает.
А то вдруг и у вас заработает
Вроде бы я всё уложил по инструкциям и вот что .

Надеюсь, что я ничего не напутал при установке. И всё-таки целесообразнее было бы помимо ссылок ещё и присоединять на форуме файлами. Чтобы была однозначность и для пользователя, и для топикстартера.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus — расширенный анализ стека

Post by citRiks »

Ann, я сейчас обновил много чего в репозиториях,
разобрался с некоторыми зависимостями, и нас это продвигает,
но наверное я сейчас закончиваю на сегодня, сорри..

A по поводу последней ашипки, -
убедитесь что в _макроинит.луа так:

Code: Select all

if not Xer0X then Xer0X = { } end
require("Lib-Common-@Xer0X")
require("introspection-@Xer0X")
local	ok, err_msg, le = Xer0X.fnc_safe_require("LE")
if	ok 
then	_G.LE = le
	_G.le = le
end
if not	debug.traceback__orig 
and	debug.getinfo(debug.traceback, "S").what == "C" 
then	debug.traceback__orig = debug.traceback
end
local ok, err_msg, stp = Xer0X.fnc_safe_require("StackTracePlusPlus-@Xer0X")
Xer0X.STP = stp
local sz_err_dir = win.GetEnv("temp")
if stp and true
then	debug.traceback = function(...)
		local err_rep_1, err_rep_2, err_rep_3, err_rep_4, err_rep_5 = debug.traceback__orig(...)
		Xer0X.fnc_file_text_save(sz_err_dir.."\\far_err_rpt_orig.txt", err_rep_1)
		local tbl_stack, tbl_path = stp.fnc_stack_trace(..., 2, "no_header", true)
		Xer0X.fnc_file_text_save(sz_err_dir.."\\far_err_rpt_plus.txt", tbl_stack.message_new)
		far.Timer(1, function(sender)
			sender.Enabled = false;
			sender:Close();
			LE(tbl_stack, "EXEC ", nil, nil, tbl_path)
		end)
		return err_rep_1.."\n"..tbl_stack.message_new
	end
end
(как в репозитории собсна)

П.С.
Когда и если будет желание и время,
посмотрите чего я ВО ВСЕХ репозиториях подобавлял и пообновлял,
должно получиться, а лучше дождаться когда я прогоню свои базовые тесты
Last edited by citRiks on Sat 13 Feb, 2021 23:33, edited 2 times in total.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

StackTracePlus — расширенный анализ стека

Post by Ann »

citRiks wrote: Sat 13 Feb, 2021 23:07убедитесь что в _макроинит.луа так:
Да, так. Тем паче, что я элементарно скопировал файл из репозитория.
посмотрите чего я ВО ВСЕХ репозиториях подобавлял и пообновлял
Максимально тщательно посмотрел и всё полностью обновил.

И в результате при загрузке Фара выводится тоже самое окно, которое показано в моём предыдущем посте под спойлером во второй части .

И, в добавок к этому, при перезагрузке макросов из Macro Browser`а по CtrlR вылезает следующее красное окно странного .

В этом окне вроде как сообщается, что не найден модуль Lib-Common-@Xer0X.LUA, хотя он точно на месте и именно с этим именем.

В связи с этим у меня возникли два дилетантских вопроса:
1) а не может ли это быть связано с тем, что из одного модуля (StackTracePlusPlus-@Xer0X.lua) запрашивается другой модуль (Lib-Common-@Xer0X.LUA) и из-за того, что первый грузится прежде, чем второй, первый его не видит?
2) и что это за странные dll`ки перечислены в этом окне?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus — расширенный анализ стека

Post by citRiks »

Ann wrote: Sun 14 Feb, 2021 07:17 И, в добавок к этому, при перезагрузке макросов из Macro Browser`а по CtrlR вылезает следующее красное окно странного
ну тут явный мой косяк, надо не так:
require("Lib-Common-@Xer0X.LUA")
а вот так:
require("Lib-Common-@Xer0X")
у себя я нашел тогда еще вчера и починил,
и забыл проапдейтить изза множества других апдейтов.
потому что для модулей не надо прибавлять ".Луа" в конце.
Ann wrote: Sun 14 Feb, 2021 07:17 1) а не может ли это быть связано с тем, что из одного модуля (StackTracePlusPlus-@Xer0X.lua) запрашивается другой модуль (Lib-Common-@Xer0X.LUA) и из-за того, что первый грузится прежде, чем второй, первый его не видит?
не, должно быть все равно абслоютно, модули грузятся (реквайрятся) первый и единственный раз, а повторные реквайры лишь берут уже загрушенный модуль из памяти, без повторной инициализации, и ничего не деля кроме предоставления модульных функций
Ann wrote: Sun 14 Feb, 2021 07:17 2) и что это за странные dll`ки перечислены в этом окне?
не найдя указанного модуля, Луа начинает думать что надо поискать в ДЛЛ с тем же именем,
a ДЛЛ-и не находит естессна, и об этом добросовестно сообщает
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

StackTracePlus — расширенный анализ стека

Post by Ann »

citRiks wrote: Sun 14 Feb, 2021 12:07надо не так:
require("Lib-Common-@Xer0X.LUA")
а вот так:
require("Lib-Common-@Xer0X"), ... потому что для модулей не надо прибавлять ".Луа" в конце
...
модули грузятся (реквайрятся) первый и единственный раз, а повторные реквайры лишь берут уже загрушенный модуль из памяти, без повторной инициализации, и ничего не делая кроме предоставления модульных функций
Ну, вот теперь и я буду это знать, и те, кто тоже не знал, но прочтут Ваше сообщение.

После внесения правки второе сообщение перестало выводиться. Но первое всё равно появляется при загрузке Фара. И, вроде бы, не препятствует дальнейшей работе с Фаром.

Но после установки макроса Dialog_ReXiZeR.@Xer0X.Lua вслед за первым сообщением появляется .

Которое также легко снимается и можно продолжать дальше.

И при перезагрузке макросов появляется "слоёное" .

Где под голубым можно прочитать .
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus — расширенный анализ стека

Post by citRiks »

Ann wrote: Sun 14 Feb, 2021 13:09 И при перезагрузке макросов появляется "слоёное"
А вот это уже успех :) это работает STP@Xer0X
то что красное - ашипку эту сохраняет в темп директорию,
может оттуда удобнее брать, и рядом там будет оригинальное собщение об ошибке,
может сравнить чтобы понять зачем это.

А то что голубое - это ЛуаЭксплорер со стеком исполнения,
по всему уровню стека можно ходить (табличка с цифирками сверху)
Открывается на том уровне где о произошла ошибка.
На всех уровнях:
INF - информация о функции
LCL - локальные переменные
UPV - внешние переменные
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus — расширенный анализ стека

Post by citRiks »

@Ann исходя из красного сообщения, я подозреваю что у вас потерялся этот файл:
https://github.com/dr-dba/lua-far-dialo ... 0X.Lua.Lng
Это ничья не вина кроме моей, я его вчера поздно лишь добавил
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

StackTracePlus — расширенный анализ стека

Post by Ann »

citRiks wrote: Sun 14 Feb, 2021 21:11исходя из красного сообщения, я подозреваю что у вас потерялся этот файл:
https://github.com/dr-dba/lua-far-dialo ... 0X.Lua.Lng
Увы, этого оказалось .

И макрос Dialog_ReXiZeR.@Xer0X.Lua так и не появляется в Macro Browser`е.
Post Reply

Return to “Обсуждение макросов”