Microsoft Windows предоставляет (используйте SUA, если вам нужен POSIX), вполне возможно, самую продвинутую инфраструктуру heap + (другой API, известный как использующий кучу) из всех имеющихся на сегодняшний день ОС.
ловушки отладки __malloc () и связанные с ними интерфейсы отладки CRT хороши для случаев, когда у вас есть исходный код для тестов, однако они могут часто пропускать выделения стандартными библиотеками или другим связанным кодом. Это ожидается, поскольку они являются инфраструктурой отладки кучи Visual Studio.
gflags - это очень полный и подробный набор возможностей отладки, который включен в Windows на протяжении многих лет. Имея расширенные функциональные возможности только для исходного и двоичного сценариев использования (так как это инфраструктура отладки кучи ОС).
Он может регистрировать полные трассировки стека (повторную передачу символической информации в пост-процессной операции) всех пользователей кучи для всех точек входа, изменяющих кучу, последовательно, если это необходимо. Кроме того, он может модифицировать кучу с помощью патологических случаев, которые могут выровнять распределение данных таким образом, чтобы оптимально назначалась защита страницы, предлагаемая системой VM (т. Е. Выделять запрошенный блок кучи в конце страницы, так что даже переполнение одного байта) обнаружен во время переполнения.
umdh - это инструмент, который может помочь оценить состояние на различных контрольных точках, однако данные постоянно накапливаются во время выполнения цели, или это не простая остановка отладки контрольной точки в традиционном контексте. Кроме того, ПРЕДУПРЕЖДЕНИЕ , Последнее, что я проверил, по крайней мере, общий размер циклического буфера, в котором хранится информация стека, для каждого запроса несколько мал (64 тыс. Записей (записей + стек)), поэтому может потребоваться дамп быстро для тяжелых пользователей кучи. Есть и другие способы доступа к этим данным, но umdh довольно прост.
ПРИМЕЧАНИЕ есть 2 режима;
- РЕЖИМ 1, umdh {-p: идентификатор-процесса | -pn: имя-процесса} [-f: имя файла] [-g]
РЕЖИМ 2, umdh [-d] {Файл1} [Файл2] [-f: Имя файла]
Я не знаю, что за безумие охватило разработчика, который решил чередовать спецификатор аргумента -p: foo и простой порядок аргументов, но это может немного запутать.
SDK для отладки работает с рядом других инструментов, memsnap - это инструмент, который, очевидно, фокусируется на утечке памяти и т. Д., Но я не использовал его, ваш пробег может отличаться.
Выполнить gflags без аргументов для режима пользовательского интерфейса, + arg и / args также различаются «режимами» использования.