Re: вопрос про исключения
От: DM.PROFF Россия  
Дата: 06.08.11 03:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите пожалуйста как из обработчика исключения узнать в каком месте это исключение было сгенерировано ?


Если под местом подразумевается адрес, то можно так

CONTEXT          context;
EXCEPTION_RECORD er;

__try
    {
        ...
    }
__except (er      = *(GetExceptionInformation())->ExceptionRecord, 
          context = *(GetExceptionInformation())->ContextRecord, 
          EXCEPTION_EXECUTE_HANDLER)    
        { 
        // x86
        cout << "Exception Address is: 0x" << hex << (DWORD) er.ExceptionAddress << endl;
        cout << "EIP from context is: 0x" << hex << context.Eip << endl;        

        // x64
        cout << "Exception Address is: 0x" << hex << (DWORD64) er.ExceptionAddress << endl;
        cout << "RIP from context is: 0x" << hex << context.Rip << endl;    
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.