Dumps что это за программа

В этой статье я расскажу, как можно настроить сохранение дампов в Linux при падении процессов, такие дампы называют core dumps.

Оглавление скрыть

Введение

При работе в Linux у вас запускается множество процессов, но иногда какой-нибудь процесс может начать падать. Или какая-нибудь программа может не запускаться. Иногда разработчики для анализа таких ситуаций просят выслать им дамп ядра (core dumps) относящийся к падению их программы.

Вообще core dumps никак не связан с ядром Linux. Термин “Ядро” в этом случае относится к старой памяти на магнитных сердечниках из старых систем (magnetic core memory). Хотя такая память уже не используется, но термин core dumps всё еще употребляется.

В core dumps сохраняется память сбойного процесса при его падении, а также некоторая служебная информация.

Ограничение на размер дампа

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

Exam C2010 555 IBM Maximo Asset Management v7 6 Functional Analyst

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

$ ulimit -S -c 0

В выводе у меня 0 – это означает что создание дампов под моим пользователем и в моём окружении невозможно.

Командой выше мы смотрели мягкое (soft) ограничение. Это фактическое ограничение, которое влияет на процессы.

Есть ещё жесткое ограничение (hard), его может поменять только root пользователь. Давайте посмотрим как сейчас нас ограничивает жёсткое ограничение:

$ ulimit -H -c unlimited

Из этого следует, что сейчас жёсткое ограничение нас вообще не ограничивает. Поэтому мы можем изменить для себя мягкое ограничение и разрешить создание дампов. Это делается командой:

$ ulimit -c unlimited
$ ulimit -S -c unlimited

Куда сохранять дампы ядра

Чтобы узнать, куда сейчас сохраняются дампы ядра, нужно прочитать файл /proc/sys/kernel/core_pattern:

*** Debian 11 *** $ cat /proc/sys/kernel/core_pattern core *** Ubuntu 22.04 *** $ cat /proc/sys/kernel/core_pattern |/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g — %E

Debian называет файлы дампов именем core и куда-то их сохраняет (если честно, я не выяснял куда).

Ubuntu через пайп передаёт дамп на обработку программе apport.

Вы можете временно (до перезагрузки) изменить путь и имя дампов задав свой шаблон, например таким способом:

$ sudo sysctl -w kernel.core_pattern=/var/crash/core.%u.%e.%p

Выше мы меняем параметр sysctl – kernel.core_pattern. И задаём ему значение состоящее из пути и имени файла, а также используем переменные:

  • %u – имя пользователя (под каким пользователем работала упавшая программа);
  • %e – имя программы;
  • %p – номер процесса (pid).

Проверим что путь изменился. Затем нужно создать этот каталог, если его ещё не существует и убедиться что наш пользователь сможет в него писать.

Это DUMP!


*** Ubuntu 22.04 *** $ cat /proc/sys/kernel/core_pattern /var/crash/core.%u.%e.%p $ ls -ld /var/crash/ drwxrwxrwx 2 root root 4096 апр 21 01:01 /var/crash/ *** Debian *** $ cat /proc/sys/kernel/core_pattern /var/crash/core.%u.%e.%p $ ls -ld /var/crash/ ls: невозможно получить доступ к ‘/var/crash/’: Нет такого файла или каталога $ sudo mkdir /var/crash/; sudo chmod 777 /var/crash/ $ ls -ld /var/crash/ drwxrwxrwx 2 root root 4096 мая 31 15:50 /var/crash/

Читайте также:
Plickers что это за программа и нужна для чего

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

Создаём сбойную программу

Для того чтобы проверить что дампы для нас уже выполняются нужно запустить программу, которая точно упадёт. Напишем эту программу сами:

$ nano crash.c int main() < return 1/0; >

Наша программа выполняет деление на 0 и это приводит к сбою.

Теперь нужно откомпилировать эту программу (возможно вам придется установить gcc):

$ gcc -o crash crash.c crash.c: In function ‘main’: crash.c:3:13: warning: division by zero [-Wdiv-by-zero] 3 | return 1/0; | ^

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

Теперь запустим программу:

$ ./crash Floating point exception (core dumped)

Программа падает с ошибкой и видно что был сформирован core dumped. Если бы дампы ядра были отключены, этой надписи в скобках не появилось бы.

Посмотрим на наш файл дампа:

$ ls -l /var/crash/ total 120 -rw——- 1 alex alex 299008 мая 31 12:58 core.1000.crash.1397

Настройка создания дампов на постоянной основе

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

Ограничение на размер дампа

Настройка лимитов производится в конфиге /etc/security/limits.conf или лучше создать отдельный конфиг в каталоге /etc/security/limits.d/.

$ sudo nano /etc/security/limits.d/core.conf root hard core unlimited root soft core unlimited * hard core unlimited * soft core unlimited

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

Дальше идет тип ограничения. Soft – это мягкое ограничение, которое фактически ограничивает процессы. А hard – это верхняя граница для soft. Соответственно soft должно быть всегда меньше hard.

Core – это специальное ограничение для дампов ядра. Ограничивать лимитами можно многие параметры, но это выходит за рамки этой статьи.

Unlimited – означает, что мы не ограничиваем размер дампов. Здесь вы можете указать число в байтах, или 0 чтобы совсем выключить создание дампов.

Чтобы внесённые изменения применились к какому-нибудь процессу, этот процесс нужно перезагрузить.

Путь сохранения дампов

Отредактируйте конфиг /etc/sysctl.conf:

$ sudo nano /etc/sysctl.conf kernel.core_pattern=/var/crash/core.%u.%e.%p fs.suid_dumpable=2

Вторым параметром мы разрешаем программам имеющим бит Setuid тоже сохранять дампы при падениях.

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

Параметр fs.suid_dumpable для sysctl может принимать следующие значения:

  • 0 – отключено;
  • 1 – включено;
  • 2 – включено с ограничениями. Делает дампы ядра доступными для чтения только пользователю root.

Чтобы применить изменения, выполните sysctl с ключом -p.

$ sudo sysctl -p kernel.core_pattern = /var/crash/core.%u.%e.%p fs.suid_dumpable = 2

Разрешаем сохранять дампы службам systemd

Хорошо, путь к созданию дампов мы указали и лимиты для всех пользователей убрали.

Но для сохранения дампов служб работающих в systemd, нам нужно настроить ещё один конфиг.

$ sudo nano /etc/systemd/system.conf DefaultLimitCORE=infinity

Чтобы применить изменения выполните следующие команды:

$ sudo systemctl daemon-reexec $ sudo systemctl restart nginx.service

И чтобы проверить применились ли наши изменения посмотрите информацию о лимитах для процесса nginx:

$ systemctl status nginx.service | grep ‘Main PID’ Main PID: 2099 (nginx) $ cat /proc/2099/limits | grep ‘core’ Max core file size unlimited unlimited bytes

В командах выше я вначале получаю PID основного процесса nginx, а затем использую его, чтобы посмотреть лимиты этого процесса.

Вот теперь nginx сможет сохранить дамп при падении.

Сохранения дампа при падении nginx

Чтобы имитировать падение nginx, убьём его главный процесс отправив сигнал SIGSEGV:

Читайте также:
Unattended soft что это за программа и нужна ли она

$ sudo kill -s SIGSEGV 2099

Проверим что дамп появился:

$ ls -l /var/crash/ total 1940 -rw——- 1 root root 2347008 мая 31 13:41 core.0.nginx.2099 -rw——- 1 alex alex 299008 мая 31 12:58 core.1000.crash.1397

Чтение дампов ядра

Чтобы понять что произошло нужно прочитать дамп ядра. Для этого используется утилита gdb (её нужно установить). Вначале указывается путь к программе, затем путь к дампу:

*** Дамп нашей сбойной программы *** $ gdb ./crash /var/crash/core.1000.crash.1397 Program terminated with signal SIGFPE, Arithmetic exception. Программа завершилась с сигналом SIGFPE, арифметическое исключение. *** Дамп процесса nginx *** $ sudo gdb /usr/sbin/nginx /var/crash/core.0.nginx.2099 Program terminated with signal SIGSEGV, Segmentation fault. Программа завершена с сигналом SIGSEGV, ошибка сегментации.

Вывод

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

Настройка дампов ядра (core dumps) в Linux

Имя статьи
Настройка дампов ядра (core dumps) в Linux

В этой статье я расскажу, как можно настроить сохранение дампов в Linux при падении процессов, такие дампы называют core dumps

Источник: sysadminium.ru

Расширение файла DUMP

Расширение файла DUMP имеет четыре тип (-ов) файла (-ов) и связано с пять различными программными обеспечениями, но главным образом с macOS, разработанным Apple. Часто они представлены в формате Dump File. Большинство файлов DUMP относятся к System Files, однако они также могут относится к Data Files.

Расширение файла DUMP можно просмотреть в Mac, Windows и iOS. Они поддерживаются в основном настольными компьютерами и некоторыми мобильными платформами. Рейтинг популярности данных файлов составляет «Низкий», что означает, что они не очень распространены.

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

Источник: www.solvusoft.com

Debug Dump Files — что это такое и можно ли удалить?

Приветствую друзья! Не все файлы можно удалять в Windows. Да, есть временные файлы, которые называются temp-файлы, для них даже существует специальная папка Temp (%temp%). Еще есть log-файлы, в которых содержится информация о работе программы, как об успешных операциях, так и об ошибках. А еще есть файлы, которые содержат много специфичной информации именно об ошибке — сегодня о таких мы поговорим.

Debug Dump Files — что это такое?

Служебные файлы, созданные отладчиком Windows. Содержат данные об условиях, при которых произошла ошибка/сбой.

Отвечу коротко — если компьютер работает нормально, без глюков — можно спокойно удалить. Но даже если есть глюки — 95% что эти файлы так и останутся бесполезными.

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

Debug Dump Files это что-то вроде снимка системы на момент ошибки. Могут иметь расширение *.dmp, они могут быть скрытыми, в них может быть также содержимое оперативной памяти на момент ошибки.

Например при ошибке синий экран — тоже создается дамп-файл, анализ которого можно выполнить в утилите BlueScreenView:

Debug Dump Files — можно ли удалить?

Как мы уже выяснили — да. Только не стоит удалять вручную, лучше это дело доверить встроенному компоненту очистки системы.

Читайте также:
Что за программа нюша

Чтобы удалить Debug Dump Files, а также другие мусорные данные:

  1. Зажмите Win + R, появится окошко Выполнить, вставьте команду cleanmgr и нажмите ОК.
  2. Далее выберите системный диск. Удалить можно сначала на системном, а потом на других.
  3. Появится окошко Очистка диска. Потом нажимаете Очистить системные файлы (если такая кнопка есть).
  4. В списке Удалить следующие файлы вы можете отметить все пункты галочками — ничего опасного не удалится.
  5. Галочками отметили — нажимаем ОК. Начнется удаление. Внимание! Иногда оно занимает много времени, при этом может ПК грузить, будет казаться что зависло, но на самом деле нужно просто подождать.

Также очистку диска можно выполнить из свойств диска — правой кнопкой по диску (в окне Мой компьютер) > свойства > на вкладке Общие будет кнопка Очистка диска:

Собственно окошко с вкладкой, где можно выбрать что удалять:

Иногда Debug Dump Files могут занимать прилично много места, поэтому конечно их стоит удалить:

Также, если я не ошибаюсь, то в CCleaner есть аналогичная опция — Memory Dumps и возможно что это тоже самое что и Debug Dump Files:

Описание некоторых пунктов из очистки

  1. Временные файлы установки — которые были созданы во время установки софта. Например это могут быть данные, которые были распакованы из архива при установке, это частая ситуация. Вообще установщик ПО после установки программы должен чистить после себя мусор, но к сожалению это не всегда происходит.
  2. Старые файлы программы Chkdsk — потерянные фрагменты файлов, которые были созданы во время работы команды Chkdsk. Можно удалить. Что за команда Chkdsk? Например выключили свет внезапно. Некоторые данные не успели записаться на диск полностью в итоге данные стали повреждены. Чтобы все это исправить — автоматически может запуститься команда Chkdsk при включении ПК, которая при своей работе может создавать служебные файлы. Когда проверка Chkdsk выполнилась, то эти служебные файлы уже не нужны, поэтому их можно удалить.
  3. Предыдущие установки Windows — при установке Windows, предыдущая система может быть скопирована в специальную папку Windows.old, которая может занимать прилично места. Если вам не нужна предыдущая ваша Windows, то конечно эти данные можно удалить.
  4. Файлы дампа памяти для системных ошибок — информация о том при каких условиях произошли ошибки/сбои ПО или системы. Может быть нужна при анализе, чтобы выяснить почему произошла ошибка, такой анализ вряд ли сможет сделать обычный пользователь. В целом если ПК работает стабильно и без глюков — эти данные не нужны.
  5. Файлы, выброшенные обновлением Windows — как я понимаю это копии файлов, которые были обновлены на новые версии при обновлении Windows. То есть это системные файлы прошлой версии, они уже не используются системой, так как при обновлении были заменены на более новые версии.
  6. Пользовательские архивы отчетов об ошибках — файлы, которые используются для отчетов об ошибках и поиска решений. Как понимаю — возможно просто информация об ошибках, которые возникали в софте который вы используете.
  7. Файлы журнала обновлений Windows — данные, которые могут быть использовании при решении проблем с обновлениями.

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

Заключение

  1. Debug Dump Files — файлы, которые были созданы встроенным отладчиком Windows.
  2. Необходимы только для анализа, чтобы понять из-за чего произошла ошибка/сбой. Обычно никто эти файлы не анализирует на домашних ПК.
  3. Можно безопасно удалить, особенно если ПК работает исправно и без ошибок.

Источник: 990x.top

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