Как отследить утечки ручки? - PullRequest
5 голосов
/ 21 октября 2011

В одном из моих приложений я наблюдаю увеличение количества ручек. Число увеличивается примерно каждую секунду без использования приложения, поэтому в некоторой части кода фоновой обработки должна быть утечка дескриптора.

Как я могу отследить такие утечки? Есть ли инструменты, которые помогут с этим? Какие шаблоны нужно искать при отслеживании утечек на рукоятках? Каковы наиболее распространенные ошибки, которые вызывают утечку ручки?

Куча вопросов, но я надеюсь, что они достаточно связаны, чтобы поставить их в один вопрос. Спасибо за любой вклад заранее!

Ответы [ 2 ]

5 голосов
/ 21 октября 2011

Некоторые профилировщики (например, AQTime ) могут профилировать приложения ресурсов Windows.Если вы используете XE, у вас есть базовая версия AQTime.

Утечки дескрипторов распространены, если путь выполнения не закрывает их должным образом - но в Windows дескриптор является очень распространенным элементом, используемым вочень много разных ситуаций, какие ручки у вашего приложения подтекают?

5 голосов
/ 21 октября 2011

Я предлагаю использовать Process Explorer . Запустите его от имени администратора, чтобы убедиться, что вы видите все соответствующие данные. Там вы можете увидеть, какие ручки у вашего процесса, а какие чрезмерно создаются и не свободны. Это должно помочь вам сузить поиск (в моем случае у меня были протечки сокетов повсюду из-за некоторых ложных предположений о поведении winsocks.). Возможно, тогда вы сможете выделить соответствующий код и опубликовать его здесь, чтобы мы могли проверить, есть ли что-то не так. Удачи!

...