Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.01.02;
Скачать: CL | DM;

Вниз

ЛОгирование исключений   Найти похожие ветки 

 
@!!ex ©   (2010-10-06 19:35) [0]

Нашей некий код, заменяющий стандартную функцию RTLUnwindProc:
procedure MyRtlUnwind; stdcall;
var
 PER : PExceptionRecord;
 procedure DoIt;
 begin
   //обработка исключения
 end;
begin
 asm
   mov eax, dword ptr [EBP+8+13*4]      
   mov PER, eax
 end;

 DoIt;

 asm
   mov esp, ebp
   pop ebp
   jmp oldRTLUnwindProc
 end;
end;

Объясните пожалуйста, что делает ассемблерная вставка?
Ну вторую часть я понял - вызов стандартного обработчика... А первая?? До DoIt??


 
@!!ex ©   (2010-10-06 19:37) [1]

Вообще этот код на TDE работает...
Но!

в DoIt есть вот такой блок:
   if PER^.ExceptionFlags and 1=1 then      // This seems to be an indication of internal Delphi exception,
   begin                                    // thus we can access "Exception" class
     try
       E := Exception( PER^.ExceptObject);
       if (E is Exception) then
         s:=s+"Delphi exception, type "+E.ClassName+", message: "+E.Message+#13#10;
     except
     end;
   end;

Который должен давать доп. инфу... вот он не работает. Как я понимаю из-за неверного кода в ассемблерной вставке(пример сделан для D7, а я пишу на TDE, видимо RTL слегка изменился).
Гуглить пробовал, вся инфа идет времени D7.


 
@!!ex ©   (2010-10-06 19:40) [2]

в смысле первая тоже понятно, устанавливает указатель на структуру... но откуда взять актуальное число для указателя??


 
@!!ex ©   (2010-10-06 19:47) [3]

Подбором вычислил - 8+14*4


 
Rouse_ ©   (2010-10-06 20:36) [4]

Посмотри Jedy там идет правильный хук обработчика исключений с выводом стека фреймов исключений


 
Игорь Шевченко ©   (2010-10-06 21:33) [5]


> Объясните пожалуйста, что делает ассемблерная вставка?

http://msdn.microsoft.com/en-us/library/ms680609(VS.85).aspx
http://www.wasm.ru/article.php?article=Win32SEHPietrek3



Страницы: 1 вся ветка

Текущий архив: 2011.01.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
2-1286282763
TRSteep
2010-10-05 16:46
2011.01.02
Форма для печати


2-1286307307
Антон Т.
2010-10-05 23:35
2011.01.02
Заполнить формы в браузере где есть несколько фреймов


15-1279792599
Baks
2010-07-22 13:56
2011.01.02
Посоветуйте платный хостинг


2-1279887034
Mishenka
2010-07-23 16:10
2011.01.02
Как в cxVerticalGrid из DevExpress задать EditorProperties ?


15-1284669964
картман
2010-09-17 00:46
2011.01.02
нечеткий поиск в БД