• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

В чем разница между "procedure" и "module" (функци

  • Автор темы fedotxxl
  • Дата начала
F

fedotxxl

LSI_THREAD_CALLPROC Get the name of the calling procedure
LSI_THREAD_CALLMODULE Get the name of the calling module

Первое возвращает человеческое значение, второе - бред всякий...

Чего я хочу получить? Я хочу написать DebugTracker, который бы возвращал не только ошибку, процедуру, номер и т.д., но так же и название агента/представления/формыподформы т.д... Каким более менее разумным способом можно получить, где исполнялась процедура?
 
O

Omh

Второе в агенте на сервере тоже возвращает человеческое значение.
Сам это не проверял, но на форумах писали что это так.

Кстати, именно сейчас у меня то же та же проблема: как расшифровать эту фигню, что возвращается.
Это какой-то код ноты, в которой вызвана ошибка, т.к. ф-ии из одной биб-ки имеют один и тот же код.
 
K

Kee_Keekkenen

вопрос не в тему.. а зачем вообще создавать очень сложный DebugTracker ?
 
O

Omh

Для: Kee_Keekkenen
А он не очень сложный
Он вообще без параметров :)
 
Y

Yakov

Для: fedotxxl
Покажите, пожалуйста, пример обработки исключения с вызовом вашего DebugTracker'а.
Может, достаточно в каждом модуле создать константу Private Const MODULE_NAME = "MyCoolLib", которую каким-либо образом передавать в Tracker?
Либо использовать обработчик типа
Код:
		On Error Goto errorHandler

Exit Sub
errorHandler:
Error Err, Error$ & Chr$(10) & MODULE_NAME & "." & Typename(Me) & "." & Getthreadinfo(1) & " at line " & Cstr(Erl)
Exit Sub
В итоге, клиент получит сообщение об ошибке, содержащее весь стек вызовов, вида:
Код:
Divide by zero
MyCoolLib.SUPERCLASS.SUPERMETHOD at line 2
ThirdPartyLib.MEGACLASS.MEGAMETHOD at line 149

Для: Omh
Утилитой посмотрите на поле $ScriptLib_O документа библиотеки. По смещению 0x0210 находится некая "фигня" вида "*.4.A.6.3.F.F.4.". Ничего не напоминает? :) Кстати, далее идут вполне читаемые строки. К слову, с этого места начинается таблица символов библиотеки. В ней находятся все текстовые строки, используемые в модуле.
 
O

Omh

Для: Yakov
Информация выглядит полезной :)
Вернусь на работу - посмотрю.

У меня раньше был errorhandler с параметрами, вроде того, что ты показал.

Сейчас решил немного редизайнить его: не использовать параметры вообще, а внутри брать информацию из GetThreaInfo() с параметрами LSI_THREAD_CALLPROC/LSI_THREAD_CALLMODULE и функций возвращающих код, название и линию ошибки.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!