Определить причину зависания

Тема в разделе "WASM.WIN32", создана пользователем volodya, 19 янв 2005.

  1. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Есть, положим, WTL-программа. Ессно, под Win32, если кто в танке :) Так вот, по не вполне понятным причинам, она иногда наглухо виснет. Сам GUI-интерфейс. Можно ли как-то определить, а почему произошел взвис? Может, BoundsChecker? Может, аттач к процессу в отладчике и просмотр стека? Словом, поделитесь опытом :)
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    А что с прогой то происходит, не реагирует на нажатия клавиш или падает?
     
  3. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Не реагирует. Висит :) Что-то не то с сообщениями :)
     
  4. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    в качестве пробного средства я бы попробовал мониторить состояние потоков программы с пом. Process Explorer от sysinternals.



    Также целесообразно контроллировать активность цикла обработки сообщений каждого потока с пом. трассировки (ATLTRACE напр.)
     
  5. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Можно послать WM_QUIT чтобы проверить или ещё нажать Ctrl+Shift+Esc и посмотреть статус "Выполняется" или "Не отвечает", потом на закладку "Процессы" и понаблюдать (сперва Вид\Выбрать столбцы - Все), если вся загрузка ЦП значит висит в цикле, иначе свои такты отдала потоку другого процесса, посмотреть на счетчики изменения памяти, приаттачится отладчиком надо попробовать обязательно
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    А можно ли профайлером определить, зациклилась ли прога или ждёт чего-то, сообщений, например?
     
  7. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Скорее нет, он не умеет аттачится к процессу, а запускать и ждать когда зависнет сам понимаешь, отладчик лучше, там запаузил и видишь где и что происходило
     
  8. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    IHMO использование профайлера может помочь локализовать проблему (а может и не помочь), самое главное, что бы прога зависла в момент профилирования, а потом посмотреть где больше всего времени затрачено. Только, вероятнее всего, профайлер покажет куда-нибудь в ядро =)
     
  9. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    профайлер "интегрирует" параметры работы проги. В итоге проблема получается размазанной.
     
  10. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    CodeAnalyst вполне нормально определяет бесконечные циклы, а вот если есть deadlock из-за какой-нибудь EnterCriticalSection, тогда да - всё время будет потрачено в ядре и это мало что даст :-(
     
  11. SI_16

    SI_16 New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    10
    первый шаг в исправлении ошибки - добиться ее воспроизводства.

    если воспроизводить ошибку не получается, можно порекомендовать вести логи(кто, что и когда захватил/отпустил)
     
  12. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    volodya

    там с хуками чето намудрено, я с год назад переписывал частично WTL на асм - глючков там хватает, себе по ходу и правил. Пробуй сообщения отключать по очереди для меню если сорцы проги есть, иначе в отладчике такое не ловится - олли всю машину рушил до синего экрана, если хуки есть в проге
     
  13. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    masquer



    большое спасибо за совет - очень полезно!