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