Как отладить и обнаружить проблему зависания - PullRequest
0 голосов
/ 16 февраля 2011

Я тестирую свое приложение (Windows 7, WinForms, средства управления инфраструктурой, C #, .Net 3.5).У меня есть два монитора, и мое приложение сохраняет и восстанавливает положение форм на первом или втором мониторах.Итак, я физически выключил второй монитор и отключил его при разрешении экрана в форме настроек дисплея Windows.Мне нужно знать, что мое приложение может восстановить позиции окон (для тех окон, которые были сохранены на втором мониторе) на первом.

Я выключил второй монитор и нажал «Определить», чтобы применить аппаратные изменения.

enter image description here

Затем Windows отключила первый монитор на несколько секунд, чтобы применить новые настройки.Когда вернулся первый экран монитора, мое приложение перестало отвечать на запросы.Мое приложение было запущено в режиме отладки, поэтому я попытался перемещаться по стеку и потокам (Visual Studio 2008), приостановил приложение, запустил и не нашел ничего, что помогло бы мне понять, почему мое приложение не отвечает.Может ли кто-нибудь помочь мне, как определить источник проблемы.

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Загрузите Средства отладки для Windows , затем запустите adplus в режиме зависания .Полученный файл .dmp открывается в windbg и вызывается:

!analyze -v -hang
1 голос
/ 16 февраля 2011

Вы должны предоставить больше информации о том, что вы видели в стеке вызовов и потоках.Какие темы были запущены?Вы видели что-нибудь, что ждали во сне или присоединились?Пробовали ли вы называть свои потоки, чтобы было понятнее, что происходит, когда вы делаете паузу (хотя это и необязательно, поскольку вы все равно можете получить эту информацию из стека вызовов ... это удобно).

...