Как создать минидамп со стековой памятью

Моя программа создает мини-дамп при сбое (используя MiniDumpWriteDump из DBGHELP.DLL), и я хотел бы сохранить минимальный размер дампа, сохраняя при этом доступную важную информацию о памяти. Я рассмотрел различные возможные комбинации флагов и функций обратного вызова, которые вы можете передать MiniDumpWriteDump (ссылки на debuginfo.com или же MSDN).

Я думаю, что я ограничен этими флагами MINIDUMP_TYPE, так как он должен работать на старой машине WinXP:

  • MiniDumpNormal
  • MiniDumpWithDataSegs
  • MiniDumpWithFullMemory
  • MiniDumpWithHandleData
  • MiniDumpFilterMemory
  • MiniDumpScanMemory

Я ищу способ объединить эти флаги и функцию обратного вызова, чтобы получить дамп со следующими требованиями:

  • Относительно небольшой размер (полный дамп памяти приводит к размеру файла ~ 200 МБ, я хочу максимум 20 МБ)
  • Трассировка стека потерянного потока, может быть также трассировка стека других потоков, но без информации о памяти
  • Информация о памяти всего стека потерянного потока. Вот где это становится сложным: включение стековой памяти не должно быть проблемой с точки зрения размера, но куча памяти может быть излишней.

Вопрос в том, как я могу ограничить информацию о памяти потерянным потоком и как включить память стека (локальные переменные) всего стека вызовов?
Можно ли также включить части памяти кучи, как только те части, на которые ссылается текущий стек вызовов?

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]