Дамп памяти для программы TSLab

Дамп памяти (англ. memory dump; в Unix — core dump) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически, когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации). Дамп также можно сохранить вручную через отладчик или любую другую специальную программу.

Wikipedia

Создание дампа памяти

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

Чтобы получить дамп процесса:

  1. Нажмите Ctrl+Alt+Delete на клавиатуре.

  2. Выберите Диспетчер задач.

  3. Дождитесь сообщения об успешном создании файла.

Если выполняется 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.

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

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

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

Также дамп памяти необхоим в случае, когда программа “зависает”, т.е. перестает реагировать на действия пользователя. При этом в логе программы не будет создана запись о возникшей ошибке.

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

Создание дампа при помощи программы ProcDump

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

Решение нашлось в виде относительно новой, бесплатной программы 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

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

Last updated