Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.01.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
@!!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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.003 c
15-1285187363
Юрий
2010-09-23 00:29
2011.01.02
С днем рождения ! 23 сентября 2010 четверг


15-1285012008
Baks
2010-09-20 23:46
2011.01.02
Кто хочет помочь VirusTotal.com с переводом ?


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


15-1284737622
bss
2010-09-17 19:33
2011.01.02
Работа с XML в пространстве имен


15-1284971610
tesseract
2010-09-20 12:33
2011.01.02
Свершилось товарищи. ShareWare процессор.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский