Дамп памяти (англ. memory dump; в Unix — core dump) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически, когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации). Дамп также можно сохранить вручную через отладчик или любую другую специальную программу.
В случаях, когда программа TSLab зависает, или зависает, например, один агент, то для определения проблемы сделайте дамп памяти и пришлите его в службу поддержки вместе с логом программы. Дамп можно сделать из диспетчера задач Windows. Порядок создания будет отличаться, в зависимости от того в каком режиме запущен TSLab и на какой версии Windows идет работа.
Чтобы получить дамп процесса:
Нажмите Ctrl+Alt+Delete на клавиатуре.
Выберите Диспетчер задач.
Для Windows 8, 8.1, 10 или серверная система нажмите Подробнее.
Если работа идет на 32-битной Windows и запущена 32-битная TSLab или на 64-битной Windows и запущена 64-битная TSLab, правой кнопкой мыши нажмите на TSlabApp.exe и из контекстного меню выбрать Create Dump File (Создать файл дампа памяти).
Дождитесь сообщения об успешном создании файла.
Перейдите в папку с созданным дампом
Если выполняется 32-битная TSLab на 64-битной Windows, то нужно запустить 32-битный Диспетчер задач.
Для этого нажать кнопку Пуск внизу слева.
В поле ввода "Найти программы и файлы" вбить (скопировать) строку C:\Windows\SysWOW64\taskmgr.exe и нажать Enter.
Должен запустится 32-битный Диспетчер задач. Чтобы убедиться что запущен 32-битный Диспетчер задач, нужно перейти на вкладку Процессы и найти строку с taskmgr.exe*32. В случае если запущен 64-битный Диспетчер задач, то строка будет taskmgr.exe.
Далее выбрать строку с TSLabApp.exe*32 и в контектном меню выбрать Создать файл дамп памяти. Так как размер полученного файла дампа будет большой, то дамп нужно запаковать каким-либо архиватором
Если на компьютере нет архиваторов(правой кнопкой мыши на файле, в контекстном меню - отправить zip), например 7Zip (http://www.7-zip.org/), и выложить на любой файлообменник, например http://disk.yandex.ru http://files.mail.ru/ Ниже приведен алгоритм создания дампа памяти при Падении программы и как альтернативный способ создания дампа памяти при зависаниях.
Программа TSLab построена на управляемом коде и выполняется под управлением .NET Framework. Но для получения данных от брокера она взаимодействует с кодом поставщика данных, который в существующих вариантах, выполнен в виде неуправляемого кода или машинного кода. Если происходит ошибка в управляемом коде, то она перехватывается внутри программы и, в зависимости от ошибки, или просто делается запись в лог-файл и продолжается выполнение программы или, для тяжелых ошибок, выводится диалог и программа аварийно завершается.
В случае ошибки в неуправляемом коде .NET Framework в большинстве случаев перехватывает и превращает их в управляемое исключение, которое потом перехватывает программа. Но при определенных ошибкахпрограмма просто аварийно завершается без передачи управления в программу. Например:
В этом случае ни о какой записи в лог и речи не идет. Для выяснения причин где и из-за чего произошла ошибка поможет дамп.
Также дамп памяти необхоим в случае, когда программа “зависает”, т.е. перестает реагировать на действия пользователя. При этом в логе программы не будет создана запись о возникшей ошибке.
Но здесь надо отличать зависание программы от замедленной реакции программы под нагрузкой. Такое поведение например получается, когда на слабом компьютере запустить многопоточную оптимизацию и одновременно открыть много окон с быстроменяющимися инструментами.
К сожалению по логам и тем более по скриншоту в данных ситуациях невозможно понять причину ошибки. Нужно делать дамп и анализировать его. Раньше, считали, что в таких случаях единственный вариант, это договариваться с пользователем о доступе на компьютер, т.к. получение дампа требовало установки специальных инструментов и умения работать с ними, что конечно нельзя предлагать обычным пользователям.
Решение нашлось в виде относительно новой, бесплатной программы ProcDump от известного автора Русиновича. Она позволяет создавать дамп при определенных условиях, которые задаются в командной строке. Разберем, что необходимо сделать для получения дампа, в случаях зависания и краха программы.
Предварительно установит на компьютер программу. Скачать procdump.zip с http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx
Распакуйте procdump.zip в какой-либо каталог, например c:\utils.
Откройте окно командную строку Windows в режиме Администратора. Для запуска с правами администратора, необходимо сделать следующее: Пуск — Все программы — Служебные. Найдите ярлык Командная строка. Нажмите на нем правую клавишу мыши и выбирите Запуск от имени администратора.
С командной строки перейти в папку где распакован procdump Переход осуществляется с помощью команды cd
Запустить программу procdump. При первом запуске она выводит окно с пользовательским соглашением, которое надо принять. Далее, шаги для случая зависания и краха отличаются.
Случай зависания, это более простой случай. В момент когда программа зависла надо запустить procdump со следующими параметрами: C:\utils>procdump -ma TSLabApp.exe crash.dmp После этого в текущей папке создастся файл crash.dmp.
В случае с крахом (падением) программы все обстоит сложнее. В тот момент, когда появился диалог об ошибке, уже поздно что-то делать. В этот момент программа уже аварийно завершилась. Дальнейшие действия имеет смысл предпринимать, только если подобная ошибка проявляется регулярно и в определенных ситуациях. Например, при выходе из программы или при определенных действиях в программе. В этом случае перед этим нужно запустить программу procdump со следующими параметрами: C:\utils>procdump -e -w -64 -ma TSLabApp.exe crash.dmp
Размер дампа варьируется от условий работы программы. Он хорошо сжимается, поэтому, для пересылки его лучше запаковать, размер архива получится по крайней мере в два раза меньше исходного файла, и вложить его в сообщение на сайте поддержки с описанием ситуации.
Программа выполняется до тех пор, пока не завершится выполнение TSLabApp.exe, и в случае если она завершится с ошибкой, то создастся дамп.