Главная страница
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
15-1284755365
Юрий
2010-09-18 00:29
2011.01.02
С днем рождения ! 18 сентября 2010 суббота


6-1232800121
DmitryG.
2009-01-24 15:28
2011.01.02
Проверка существования ресурса через TIdHTTP


2-1286570962
Andrey K
2010-10-09 00:49
2011.01.02
Как фиксировать изменения в TMemo.


15-1284046698
@!!ex
2010-09-09 19:38
2011.01.02
Фриланс заказ:3 функции для работы с географическими координатами


2-1282054512
Black123
2010-08-17 18:15
2011.01.02
TWebBrowser и WEB2.0