Как создать дамп программы

Я знаю, что можно создать полный дамп работающего приложения.
А можно ли сделать дамп не целиком, а отдельных фрагментов памяти, которое приложение для себя выделило?
Т. е. допустим программа запустилась, отвела себе через malloc/calloc 10 фрагментов по 1 Мб.
Вот как сделать дамп программы и 10 фрагментов в отдельные файлы?
Это что-то вроде Sysinternals Process Explorer?
Можно ли такую программу для дампов разработать самостоятельно?
Для Win9x была какая-то книга о внутреннем устройстве, а для Win7 нет.

  • Вопрос задан более трёх лет назад
  • 417 просмотров

Источник: qna.habr.com

Зачем нужен дамп и как его сделать

Для выявления причин сложных ошибок в программе TSLab может понадобится дамп памяти программы. Далее я расскажу в каких случаях он поможет и как его получить. Что такое дамп можно почитать здесь.

В начале небольшое введение, что из себя представляет код программы TSLab. Программа построена на управляемом коде и выполняется под управлением .NET Framework. Но для получения данных от брокера она взаимодействует с кодом провайдера данных, который в существующих вариантах (Transaq, SmartCom, Alor) выполнен в виде неуправляемого кода или машинного кода.

Синий Экран Смерти (BSoD). Узнаем причину с помощью ДАМПА памяти Windows

errordlg

Если происходит ошибка в управляемом коде то она перехватывается внутри программы и, в зависимости от ошибки, или просто делается запись в лог-файл и продолжается выполнение программы или, для тяжелых ошибок, выводится диалог и программа аварийно завершается. В случае ошибки в неуправляемом коде .NET Framework в большинстве случаев перехватывает их превращает их в управляемое исключение, которое потом перехватывает программа. Но при определенных ошибках, как например

purevirtualcall

программа просто аварийно завершается без передачи управления в программу. В этом случае ни о какой записи в лог и речи не идет. В данном случае для выяснения причин где и из-за чего произошла ошибка поможет дамп.

Еще в одном случае он поможет в выяснении причины. Это в случае когда программа “зависает”, т.е. перестает реагировать на действия пользователя. В этом случае в логе программы тоже ничего не будет. Но здесь надо отличать зависание программы от замедленной реакции программы под нагрузкой. Такое поведение например получается когда на слабом компьютере запустить многопоточную оптимизацию и одновременно открыть много окон с быстроменяющимися инструментами.

Читайте также:
Как на мейзу скачивать программы

Что делать в вышеперечисленных случаях? К сожалению по логам и тем более по скриншоту в данных ситуациях невозможно понять причину ошибки. Тут надо получать дамп и анализировать его. До недавнего времени считали что в таких случаях единственный вариант, это договариваться с пользователем о доступе на компьютер, т.к. получение дампа требовало установки специальных инструментов и умения работать с ними, что конечно нельзя предлагать обычным пользователям. В случае с паркингом это еще срабатывало, но в обычных случаях это проблематично.

Решение нашлось в виде относительно новой бесплатной программы ProcDump от известного автора Русиновича. Она позволяет создавать дамп при определенных условиях, которые задаются в командной строке. Давайте разберем что надо сделать для получения дампа в случаях зависания и краха программы. Предварительно надо установить на компьютер программу.

  • Скачать procdump.zip с http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx
    procdumpsite
  • Распаковать procdump.zip в какой-либо каталог, например c:utils.
  • Открыть окно командной строки. Пуск ->Все программы ->Стандартные ->Командная строка.В случае работы под Vista или Windows 7 запускать надо от имени администратора. Для запуска с правами администратора, необходимо сделать следующее: Пуск — Все программы — Стандартные — Командная строка. Жмем правую клавишу и выбираем Запуск от имени администратора.
  • С командной строки перейти в папку где распакован procdumpcmdcd
  • Запустить программу procdump. При первом запуске она выводит окно с пользовательским соглашением, которое надо принять.Далее шаги для случая зависания и краха отличаются. Рассмотрим случай зависания, это более простой случай. В момент когда программа зависла надо запустить procdump со следующими параметрами:C:utils>procdump -ma TSLabApp.exe crash.dmp
    После этого в текущей папке создастся файл crash.dmp.В случае с крахом(падением) программы все обстоит сложнее. В тот момент когда появился диалог об ошибке уже поздно что-то делать. В этот момент программа уже аварийно завершилась. Дальнейшие действия имеет смысл предпринимать только если подобная ошибка проявляется регулярно и в определенных ситуациях, например при выходе из программы после того как программа отработала весь день. В этом случае перед этим надо запустить программу procdump со следующими параметрами:
    C:utils>procdump –e -w -ma TSLabApp.exe crash.dmpprocdump1
    Программа выполняется до тех пор пока не завершиться выполнение TSLabApp.exe, и в случае если она завершиться с ошибкой то создастся дамп.
  • Размер дампа варьируется от условий работы программы. Он хорошо сжимается, поэтому для пересылки его лучше запаковать, размер архива получится по крайней мере в два раза меньше исходного файла, и вложить его в сообщение на сайте поддержки http://support.tslab.ru/ с описанием ситуации.
Читайте также:
Выкуп авто партнерская программа

Также есть еще один путь создания лога при падении программы, который работает на Windows 7. Для этого надо загрузить файл dump.reg (делается полный дамп) и кликнуть на нем. При этой операции требуются права администратора. Появится окно подтверждения, на котором надо ответить утвердительно.

После этого при падении программы TSLab в каталоге CrashDumps на диске с: будет создаваться дамп. В файле настроено, что максимально число дампов будет 2, далее новый дамп будет переписывать предыдущий. Более подробно можно почитать в msdn (на английском).

Дамп будет создаваться только при падении программы TSLab.

В дальнейшем, чтобы удалить данную функциональность, надо с помощью программы regedit удалить ветку реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps.

Источник: tslab.wordpress.com

Как создать дамп программы

Как сохранить дамп приложения в Windows Server 2012 R2

Всем привет, как вы знаете по мимо серверных ролей, в Windows Server 2012 R2, можно ставить и свои приложения, которые бизнес использует для клиентов. Если в системе есть какие то проблемы, то они могут приводить к ее краху, примером может быть синий или зеленый экран смерти, который заставляет систему записывать сбой в файл dump. Но, а как быть если синих экранов нет, а приложение вылетает, правильно заставить его создавать такой же дамп памяти, и сегодня я покажу как это делается.

Настройка сбора дампов приложений

И так, как настраивать дампы памяти Windows, я уже описывал, кому интересно посмотрите, чтобы в развернутом виде представлять картину. В Windows есть режим user-mode application crashes, который позволяет с помощью определенного ключа реестра задать локальное хранение таких дампов у приложений. Для начала создайте на диске C: в корне, папку с названием CrashDumps.

user-mode application crashes-1

Открываем реестр Windows Server 2012 R2, через комбинацию Win+R и вводим regedit,

Читайте также:
Программа ПДД как в гибдд

user-mode application crashes-2

Переходим в ветку (если ее не будет, то нужно ее создать)

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps

Как сохранить дамп приложения в Windows Server 2012 R2-1

Как сохранить дамп приложения в Windows Server 2012 R2-2

Теперь вам нужно создать расширяемый строковый параметр, тип REG_EXPAND_SZ

Как сохранить дамп приложения в Windows Server 2012 R2-3

В нем укажите путь сохранения дампа (user-mode application crashes), вписываем %LOCALAPPDATA%CrashDumps

Как сохранить дамп приложения в Windows Server 2012 R2-4

Далее создаем ключ DumpType с типом Параметр DWORD (32) со значением 2, это мы задаем полный дамп, если поставить 1, то будет делаться мини дамп.

application exe crashed-1

application exe crashed-2

Еще полезным будет параметр DumpCount, задающий максимальное число дампов папке, максимально можно задать 10, далее они будут перезаписываться.

application exe crashed-3

Скачать готовую ветку HKEY_LOCAL_MACHINESOFTWAREMicrosoft WindowsWindows Error ReportingLocalDumps со всеми ключами

Эти значения реестра представляют глобальные параметры. Вы также можете предоставить настройки для каждого приложения, которые переопределяют глобальные настройки. Чтобы создать параметр для отдельного приложения, создайте новый ключ для своего приложения в папке

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows Windows Error ReportingLocalDumpsИмя приложения, например 1cv8.exe. Если ваше приложение дает сбой, WER сначала прочитает глобальные настройки, а затем переопределит любые из настроек настройками вашего приложения. (https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps)

дамп приложения

Популярные Похожие записи:

  • Как скрыть программу в списке установленных, за минуту
  • Автозагрузка в windows server 2012-2016
  • Настройка #unsafely-treat-insecure-origin-as-secure в Chrome и Edge
  • Что такое утилита sysprep, простыми словамиЧто такое утилита sysprep, простыми словами
  • Произошла внутренняя ошибка в Acrobat Reader DCПроизошла внутренняя ошибка в Acrobat Reader DC
  • и APPID в Windows server 2012 R2″ width=»150″ height=»150″ /> Ошибка 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID…

Добавить комментарий Отменить ответ

Подписка на youtube канал

Выберите рубрику

Active directory, GPO, CA Android Apple ASUS, Sony VAIO CentOS Cisco, Mikrotik Debian, FreeBSD DNS Exchange, Power Shell HP/3Com Hyper-V IBM IIS и FTP, web и seo Juniper Lenovo, intel, EMC, Dell Microsoft Office Microsoft SQL server, Oracle Microsoft System Center NetApp Network, Телефония News Raid, LSI, Adaptec Supermicro Ubuntu Utilities Veeam Backup https://pyatilistnik.org/how-to-save-the-dump-application-in-windows-server-2012-r2/» target=»_blank»]pyatilistnik.org[/mask_link]

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru