Как узнать в какой процедуре произошла ошибка?

Тема в разделе "WASM.ZEN", создана пользователем Android, 8 авг 2006.

  1. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Всем привет
    Возможно ли в vc6 указать директиву компиляции, что бы компилятор автоматически в каждую процедуру добавил обработчик исключений и при возникновении ощибки выводил имя процедуры?
    И как бороться с ошибками в больших проектах?
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Android
    map файл в помощь
     
  3. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    >map файл в помощь
    Не понял, поясни
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Android
    Собирайте в режиме debug - будет обработчик со ссылкой на исходник и т.д. Вообще, в VS очень хороший встроенный отладчик.
     
  5. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Нашел идентификатор __func__, с его помощью можно сравнительно легко (вручную) проставить обработчики исключений, но похоже что мой си(6) еще не поддерживает его, компилятор ругается '__func__' : undeclared identifier.
    Неужели в си не предусмотрели ничего подобного?
     
  6. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Android
    По идее, если в системе установлен Runtime/JIT-отладчик - он должен перехватывать эти исключения, и позволять отлаживать программу с места возникновения ошибки. А вообще ошибки в зарелизенных программах обычно локализуются по дампу стека и памяти...
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Android
    http://rsdn.ru/summary/3525.xml
     
  8. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Стандартный отладчик не совсем подходит, т.к. код выполняется в другом процессе.
     
  9. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    alpet
    У меня по умолчанию стоит OllyDbg, когда возникает исключение очень трудно понять какая это процедура, особенно если ошибка всплывает в какой-то апи. Было бы удобно если бы сработал обработчик исключений и записал в файл имя процедуры, тип исключения и т.д., но не ставить же все обработчики вручную.
    Еще у меня часто встречается, что из процедуты несколько выходов(return) и на каждом из них надо снять обработчик, где-то пропустишь - нарушится стек. Можно это как-то автоматизировать?
     
  10. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Android
    Зачем в каждой процедуре свой обработчик? Пусть лучше один будет, а по стеку можно понять в какой процедуре произошло исключение.
     
  11. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    >Зачем в каждой процедуре свой обработчик? Пусть лучше один будет
    Можно и так впринципе, он в дебаг версии не помешало бы и в каждую влепить
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Android
    Не хочешь почитать те статьи? К тому же есть множество всяких библиотек для отладки. Да и самому можно написать несколько макросов для этого.
     
  13. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    IceStudent

    Те статьи я обязательно прочту, как распечатаю, не читаю большие статьи с экрана

    Пока что пользуюсь макросами:
    #if F_SEH
    #define __mytry __try{
    #else
    #define __mytry
    #endif

    #if F_SEH
    #define __myfinally(__ProcName) }__except(EXCEPTION_EXECUTE_HANDLER){OutputDebugString("!!! error in "#__ProcName);}
    #else
    #define __myfinally(__ProcName)
    #endif

    В книге написано что в стандарт C99 добавлена макроконстанта __func__(имя текущей процедуры), но 6 си ее не распознает. В 7 эта переменная поддерживается?
     
  14. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Android
    Я бы посоветовал посмотреть справку (Predefined Macros): __FILE__, __LINE__, __FUNCDNAME__, __FUNCSIG__, __FUNCTION__.

    А так - я бы поискал подходящую библиотеку для отладки - "всё уже придумано до нас".
     
  15. 10_Brasil

    10_Brasil New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2006
    Сообщения:
    54
    IceStudent
    Можешь подробнее пояснить мне тоже интересно что за библиотеки длля отладки?
     
  16. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    Поиди на http://codeproject.com/debug/ , там есть много всяких полезностей)
     
  17. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    10_Brasil
    Почитай тот цикл статей на рсдн, посмотри codeproject. Есть много всяких библиотек для логирования (протоколирования), отладки, контроля утечек памяти. Лично я пользуюсь log4cpp для логирования, а для остального - DevPartner.
     
  18. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    можно посмотреть на popcap'овский движок :)
     
  19. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    censored
    А что там? Никогда не слышал.

    Нашёл, но надо региться и качать - чёрт с ней.