Главная страница
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.008 c
8-1208862988
Moroz4
2008-04-22 15:16
2011.01.02
Находится ли точка в полигоне 2D?


8-1208839462
doKi
2008-04-22 08:44
2011.01.02
шейдары


6-1231408626
DSKalugin
2009-01-08 12:57
2011.01.02
Soap, HTTPRIO и SSL (Ошибочная авторизация сертификата)


2-1286161108
DROWSY
2010-10-04 06:58
2011.01.02
Можно ли присваивать значения полей неинициализированной формы?


2-1286273161
Jacksotnik
2010-10-05 14:06
2011.01.02
Порядковый номер в DBGrid