Медленная отладка в Visual Studio 2015 - не удается отключить кучу страниц?
Я использую Visual Studio 2015 и никогда не сталкивался с проблемами отладки. Однако в последнее время отладка идет очень медленно. Я также начал получать ошибки отладки кучи, говоря "Обнаружено повреждение кучи" из библиотеки времени выполнения Microsoft Visual C++. Я исправлю ошибки, когда приложение записывает в память после окончания буфера кучи, но отладчик работает очень медленно, даже когда я не запускаю код, который выдает эти ошибки. Я думаю, что есть какая-то настройка проверки кучи, и я хочу ее отключить.
Окно вывода отладки имеет две строки вверху, каждая из которых говорит Page heap: pid 0x530: page heap enabled with flags 0x2.
Я считаю, что это является источником проблемы или, по крайней мере, связано. Я не могу отключить кучу страниц. Я попытался в графическом интерфейсе gflags (ничего не проверялось, но я пробовал проверять и отменять проверку), и я пытался в командной строке. Перезапустил VS, перезагрузил мой компьютер, удалил и переустановил VS... ничего не работает.
Когда я запускаю конфигурацию выпуска в VS, она все еще медленная, и я все еще вижу сообщения кучи страниц в верхней части окна вывода. Однако вместо получения сообщений об ошибках отладки кучи приложение просто зависает. Но сообщения кучи страниц заставляют меня думать, что это проблема вне VS, а не как-то связанная с моей конфигурацией отладки.
Изменить: я использую wxWidgets 3.1, и я заметил, что моя программа работает медленнее во время событий, связанных с wxWidgets, таких как открытие файла или вывод много строк в textCtrl. Не уверен, что это актуально или нет.
1 ответ
Я считаю, что я решил проблему. Флаг GlobalFlag действительно был установлен. Я использовал Process Monitor, чтобы увидеть, к каким ключам обращаются из реестра, и это подтвердило мое подозрение, что GFlags использовался для моего конкретного файла изображения. Я понятия не имею, почему ни командная строка, ни версии gflags с графическим интерфейсом не позволяют мне видеть или редактировать флаги.
Во всяком случае, я пошел в редактор реестра (regedit) и перешел к HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImageFileName
, Там, GlobalFlag
был установлен в 0x20000000, что объясняет на этой странице флаг для кучи страниц. Итак, следуя инструкциям на этой странице, я установил для GlobalFlag значение -FFFFFFFF, и это сработало! Я могу нормально отлаживать снова.
Редактировать: не совсем. Отладчик теперь намного быстрее и больше не лагает. Тем не менее, я до сих пор иногда получаю "Ошибка отладки кучи".