Полезные вещи для помещения в пользовательский поток мини-дампов - PullRequest
6 голосов
/ 02 ноября 2009

Меня интересует, что разработчики могут добавить в структуру данных потока пользователя, которая может быть встроена в мини-дампы. MSDN описывает параметр для MiniDumpWriteDump следующим образом:

PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam

и описывает параметр следующим образом:

UserStreamParam [in] Указатель на массив структур MINIDUMP_USER_STREAM_INFORMATION. Если значение этого параметра равно NULL, пользовательская информация не включается в файл мини-дампов.

Я рассматривал возможность встраивания последних n строк журнала моей программы в поток пользователя, поскольку тестировщики, как правило, не отправляют правильно отформатированные журналы со всеми ошибками все время.

Кроме того, я мог бы поместить спецификации оборудования (память, процессор, видео и т. Д.) В этот раздел.

Для чего еще люди использовали сегмент потока пользователя?

Ответы [ 3 ]

3 голосов
/ 20 декабря 2009

Мне нравится ваша идея включить историческую информацию журнала. Однако, если мини-дамп создается в ответ на исключение какого-либо типа, кажется, что остановка чтения файла журнала для включения в дамп не всегда может быть лучшим планом, поскольку стабильность системы может быть сомнительной.

Наш тип по умолчанию - MiniDumpWithFullMemory. В этом случае информация о потоке пользователя не кажется особенно полезной в нашем приложении, потому что полная память включает в себя практически все возможные биты информации, которые нам нужны (по крайней мере, пока). И нам также очень повезло с получением всех файлов журнала ошибок, когда люди присылают нам файл дампа.

Однако наши пользователи могут изменить тип с помощью параметра конфигурации. Я вижу, что с одним из меньших типов минидампов информация о потоке пользователя может быть очень полезной. Я никогда не задумывался об этом параметре функции minidump, пока не увидел этот пост. У нас есть несколько структур в памяти с базовой информацией о конфигурации, которая была бы неоценимой в тех случаях, когда полный дамп памяти не создается. Кроме того, структура, содержащая детали пользователя, который «вызвал» исключение, была бы удобной. Мне нужно будет рассмотреть возможность добавления нескольких из них в виде пользовательских потоков.

1 голос
/ 29 января 2013

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

1 голос
/ 27 декабря 2009

Что может быть более полезным, чем заполнение дополнительной информации здесь, - это включать любые файлы журнала, которые вы генерируете с помощью WerRegisterFile .

...