Узнайте, где висит приложение - PullRequest
0 голосов
/ 12 ноября 2011

Есть ли способ выяснить, где приложение висит и не выполняет свою функцию?Я открыл стек вызовов, но он пуст.Что это значит.У кого-нибудь есть советы по отладке, когда приложение было в тот момент, когда оно начало зависать / перестало отвечать на запросы.

Редактировать: я использую Visual Studio 2010

Ответы [ 4 ]

3 голосов
/ 12 ноября 2011

Скомпилируйте ваше приложение с включением всех предупреждений и с помощью компилятора , выдающего отладочную информацию . В Linux это означает g++ -Wall -g. Работайте над исходным кодом, пока не получите больше предупреждений. Научитесь использовать отладчик (например, gdb в Linux) и используйте его пошаговые возможности.

Но мы не можем вам больше помочь, потому что это зависит от системы, и вы не указали, какую систему вы используете, и не показали нам код, который вы отлаживаете.

Чтение Как отлаживать небольшие программы

2 голосов
/ 12 ноября 2011

Когда это происходит со мной, я обнаруживаю, что присоединение профилировщика Very Sleepy к отладчику часто позволяет легко определить, где произошло зависание, даже если вы прикрепите его после того, как это произошло - просто ищите кадры стекабыли активны в течение 100% сеанса выборки профилировщика (путем сортировки списка по столбцу «Inclusive%» и просмотра в верхней части).

0 голосов
/ 12 ноября 2011

Поместите лог-операторы в код.Это отнимает много времени, но какой-то подход «разделяй и властвуй» должен помочь вам решить проблему.

0 голосов
/ 12 ноября 2011

В дополнение к использованию отладчика, запустите профилировщик через код. Мой VS довольно ржавый, поэтому я не могу рассказать, как это сделать, но Google может помочь.

Было бы также полезно иметь много мелких функций вместо нескольких крупных, поскольку самая узкая гранулярность профиля - это уровень функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...