seh не срабатывает

Тема в разделе "LANGS.C", создана пользователем Rascalspb, 22 дек 2007.

  1. Rascalspb

    Rascalspb New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    46
    Адрес:
    СПб
    делаю отлов падений приложения, точнее функции в длл. чтобы типа показать окошко с инфой об ошибке, сохранить некоторые данные итп. имеем такой код в начале функции. функция - метод класса, причем реализованный чистый виртуальный метод базового класса:

    Код (Text):
    1. _try{
    2.     __asm
    3.     {                      // Создаем структуру EXCEPTION_REGISTRATION:
    4.         push    _except_handler    // Адрес функции обработчика исключений.
    5.             push    FS:[0]     // Адрес предыдущего EXECEPTION_REGISTRATION.
    6.             mov     FS:[0],ESP // Добавляем в связанный список EXECEPTION_REGISTRATION.
    7.     }
    8.  
    9.     _asm xor ecx, ecx
    10.     _asm mov [ecx], ecx
    _except_handler - функция, лежащая в cpp файле, статическая, не принадлежащая никаким классам. в момент исключения хэндлер не вызывается, ни этот, ни _except(1), который ниже. почему так?
     
  2. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    а что происходит то, ничего приложение рушится?
     
  3. Rascalspb

    Rascalspb New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    46
    Адрес:
    СПб
    ну по разному. в данном случае прога просто вылетает. даже не показывается виндовое сообщение об ошибке
     
  4. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    Rascalspb
    Возьми открой дллку в LordPE обнули если присутствует указатель на директорию LoadConfig + проверь флаг в поле DllCharacteristics чтоб небыл установлен флаг Image do not used SEH (или просто обнули все поле).
     
  5. Rascalspb

    Rascalspb New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    46
    Адрес:
    СПб
    PaCHER
    Да, обнулил поле LoadConfig - теперь сех вызывается. Не мог бы пояснить, отчего такое творицо, и как компилер настроить на очистку этого поля?
     
  6. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    http://wasm.ru/forum/viewtopic.php?pid=165633#p165633