Способ формирования дамп файла

Иллюстрации

Показать все

Изобретение относится к компьютерным технологиям, в частности к системам и способам формирования дамп файла при возникновении сбоя в работе программы (аварийном завершении программы) в вычислительных системах с ограниченными ресурсами. Техническим результатом является расширение функциональных возможностей. Способ формирования дамп файла ядра при возникновении сбоя в работе программы, выполняемой на компьютере, включает следующие операции: определяют все области памяти, которые использует программа в момент возникновения сбоя; создают мгновенный снимок состояния регистров центрального процессора в момент возникновения сбоя в программе; формируют заголовок дамп файла, при этом используют данные мгновенного снимка состояния регистров центрального процессора; определяют во всех областях памяти область, которая содержит стек программы; определяют значение указателя начала стека программы, при этом используют мгновенный снимок регистров процессора; уменьшают в памяти область, которая содержит стек программы, при этом многократно сдвигают начальный адрес данной области памяти в направлении указателя начала стека; сохраняют уменьшенную область памяти, которая содержит стек программы; формируют итоговый файл, при этом сохраняют в нем данные мгновенного снимка состояния регистров центрального процессора и уменьшенную область памяти, которая содержит стек программы. 2 з.п. ф-лы, 3 ил.

Реферат

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

Во время отладки и тестирования программы в ней может произойти сбой. В случае сбоя выполнения программы с помощью ядра операционной системы компьютера формируют так называемую дамп информацию: создают дамп файл ядра - моментальный снимок состояния программы в момент возникновения сбоя. Дамп файл помогает разработчику идентифицировать источник проблемы, повлекшей сбой программы. Функция дампа ядра изначально предназначена для серверов и рабочих станций, которые имеют большие объемы памяти и много запоминающих устройств.

Встроенные операционные системы компьютеров, как правило, имеют существенно меньший объем памяти и в них зачастую нет достаточно места для сохранения файлов дампа ядра. При таких условиях нельзя создать полные и исправные файлы дампа ядра.

Известны различные подходы к решению проблемы формирования дамп файла.

В способе, приведенном в патенте США №7,010,725 [1], при возникновении сбоя в работе программы содержимое памяти (ядра) сохраняют в основную память компьютера и, в случае если размер дамп файла превышает размер основной памяти, часть дамп файла автоматически сохраняют на дополнительное запоминающее устройство, которое постоянно соединено с компьютером.

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

Наиболее близким к заявленному изобретению является способ формирования дамп файла ядра, предложенный в патенте США №6,681,348 [2], в котором в случае возникновения сбоя в программе операционная система компьютера создает полный дамп файл ядра (дамп всей физической памяти компьютера). Затем из этого файла с помощью специального программного средства создают сокращенный, так называемый «мини дамп файл», который включает в себя справочные сведения, структуру данных потока, структуру данных стека (регистры процессора), структуру данных процесса, список загруженных модулей и информационный блок управления памятью компьютера. Данный способ выбран в качестве прототипа заявленного изобретения.

Недостатком способа-прототипа является то, что он не учитывает особенностей встраиваемых систем компьютеров с ограниченными ресурсами, а именно с ограниченным объемом памяти, в которых полный дамп файл ядра не может быть весь сохранен в памяти компьютера, а следовательно, не может быть создан и мини дамп файл ядра. Кроме того, согласно способу-прототипу в мини дамп файл не заносят содержимое стеков программы, в которой произошел сбой, хотя такие данные являются важными для анализа причин сбоя программы. Указанные недостатки ухудшают функциональность способа-прототипа [2].

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

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

- определяют все области памяти, которые использует программа в момент возникновения сбоя;

- создают мгновенный снимок состояния регистров центрального процессора в момент возникновения сбоя в программе;

- формируют заголовок дамп файла, при этом используют данные мгновенного снимка состояния регистров центрального процессора;

- определяют во всех областях памяти область, которая содержит стек программы;

- определяют значение указателя начала стека программы, при этом используют мгновенный снимок регистров процессора;

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

- сохраняют уменьшенную область памяти, которая содержит стек программы;

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

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

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

Для выполнения способа важно, чтобы формировали итоговый файл во встроенном запоминающем устройстве.

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

Для лучшего понимания заявленного изобретения далее приводится его подробное описание с соответствующими чертежами.

Фиг.1. Схема компьютера со встроенной операционной системой, представленной ядром с запущенной программой.

Фиг.2. Схема формирования дамп файла в компьютере со встроенной операционной системой, выполненная согласно изобретению.

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

Стандартный компьютер (Фиг.1), в котором может быть выполнен заявленный способ, включает в себя центральный процессор 1, модуль внутренней памяти 2 и встроенную операционную систему 3. В рабочем состоянии операционная система 3 загружена во внутреннюю память компьютера. Область внутренней памяти, в которую загружена операционная система, состоит из области, в которую загружено ядро 4 операционной системы, и область 5-10 пользователя. При этом операционная система 3 выполнена с возможностью управления программой 11 пользователя и возможностью формирования дамп файла 12. Дамп файл 12 включает в себя содержимое мгновенных снимков 6-10 памяти программы пользователя и мгновенные снимки 13 регистров центрального процессора. Средство 14 создания дамп файла является частью операционной системы 3. Программа 11 пользователя состоит из заголовка 15, исполняемой части 6 и инициализированных данных 7.

В случае возникновения сбоя (Фиг.2) в работе программы 11, состоящей из заголовка 15, исполняемой части 6 и инициализированных данных 7, под управлением ядра 4 встроенной операционной системы 3 компьютера сохраняют следующую информацию о состоянии аварийной программы: образы (мгновенные снимки) 13 регистров процессора в момент сбоя программы 11, области, которые включает в себя содержимое стека аварийной программы 10.

Способ формирования дамп файла ядра при возникновении сбоя в работе программы 11, выполняемой на компьютере со встроенной операционной системой 3, включает в себя следующие операции (Фиг.2-3). Определяют все области памяти 2, которые использует программа 11 в момент возникновения сбоя (области памяти, используемые программой, обозначены 6-10; области памяти, не используемые программой, обозначены 5). Создают мгновенный снимок 13 состояния регистров центрального процессора 1 в момент возникновения сбоя в программе 11. Формируют заголовок 15 дамп файла, при этом используют данные мгновенного снимка 13 состояния регистров центрального процессора 1. В приведенном варианте заголовок дамп файла формируют путем последовательного сохранения в файл следующих объектов:

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

- мгновенный снимок регистров процессора (в частности, содержащий в той или иной форме указатель на начало стека вызовов; чаще всего процессор предоставляет разработчику возможность прочитать регистр, содержащий упомянутый указатель),

- прочие, необходимые для программного отладчика объекты, например, значения переменных ядра операционной системы.

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

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

Уменьшают в памяти область, которая содержит стек программы, при этом многократно (с максимально возможным количеством повторений) сдвигают начальный адрес данной области памяти в направлении указателя начала стека (процесс уменьшения области памяти обозначен 16 на Фиг.2 и детально проиллюстрирован на Фиг.3). Сохраняют уменьшенную область 17 памяти, которая содержит стек программы. Формируют итоговый файл 18, при этом сохраняют в нем данные мгновенного снимка 13 состояния регистров центрального процессора 1 и уменьшенную область памяти, которая содержит стек программы. Причем итоговый файл могут формировать во встроенном запоминающем устройстве. Следует отметить, что итоговый файл является дамп-файлом ядра с ограниченными возможностями (по сравнению с обычным, полным дамп-файлом). В частности, полученный дамп-файл позволяет просматривать только стек вызовов аварийно завершившейся программы. В то время как полный дамп-файл позволяет просматривать значения переменных программы и т.д.

Уменьшение области памяти, содержащей стек аварийной программы 10 (Фиг.3), во встроенной операционной системе 3, состоит в многократном (с максимально возможным количеством повторений) сдвиге 19 начального адреса 20 в направлении указателя 21 начала стека. При этом стек программы обозначен 22. Задача уменьшения области, содержащей стек вызовов, считается решенной, когда невозможно сдвинуть начальный адрес области памяти в направлении указателя стека, при этом не превысив значение указателя стека. При этом считается, что стек растет в сторону конечного адреса области памяти, в которой он содержится. Таким образом, сдвиг начального адреса области памяти не может повредить стек вызовов.

В заявленном способе в дамп файле сохраняют только следующие данные: данные мгновенного снимка состояния регистров центрального процессора и уменьшенную область памяти, которая содержит стек программы (Фиг.2). При этом размер дамп файла ядра значительно меньше объема памяти, занятого программой в момент возникновения сбоя, составляя около 1-5% объема памяти. Таким образом, удовлетворяются условия ограничения ресурсов встроенной операционной системы компьютера.

Заявленное изобретение может быть применено в различных типах компьютерных устройств.

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

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

2. Способ по п.1, отличающийся тем, что сдвигают начальный адрес данной области памяти в направлении указателя начала стека многократно с максимально возможным количеством повторений.

3. Способ по п.1, отличающийся тем, что формируют итоговый файл во встроенном запоминающем устройстве.