Главная страница
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.011 c
6-1232751421
Miho
2009-01-24 01:57
2011.01.02
Проблема в чате на сокетах


2-1286375678
AnGel
2010-10-06 18:34
2011.01.02
как узнатьть на какой созданный компонент нажал пользователь?


2-1286617311
Первокурсница
2010-10-09 13:41
2011.01.02
При щелчке на ячейке DBGrid загружать изображение в Image1 из БД


2-1286626352
grisme
2010-10-09 16:12
2011.01.02
TService, TThread и запись в файл.


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