Выборочный дамп ядра в Linux - Как я могу выбрать разделы дампа? - PullRequest
11 голосов
/ 27 января 2011

Я ищу способ выбора разделов и областей памяти, включаемых в дамп ядра.
Размер дампа ядра моего приложения составляет около 30 ГБ, большая часть которого находится в предварительно выделенных буферах, которые мне даже не нужны при отладке.(и может быть обнулен позже).Однако, поскольку дамп такой большой, приложению требуется слишком много времени, чтобы завершить сбой и начать восстановление.
Может кто-нибудь придумать, как заранее выбрать сегменты, которые будут находиться в дампе ядра?
Спасибо

Ответы [ 2 ]

16 голосов
/ 27 января 2011

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

Начиная с ядра 2.6.23, Linux-специфические Файл / proc / PID / coredump_filter может быть используется для управления тем, какие сегменты памяти записываются в файл дампа ядра в событие, когда дамп ядра выполняется для процесса с соответствующий идентификатор процесса.

Значение в файле является битовой маской типы отображения памяти (см. mmap (2)). Если в маске установлен бит, то отображения памяти соответствующих тип сбрасывается; в противном случае они не сбрасывается. Биты в этом файле имеют следующие значения:

       bit 0  Dump anonymous private mappings.
       bit 1  Dump anonymous shared mappings.
       bit 2  Dump file-backed private mappings.
       bit 3  Dump file-backed shared mappings.
       bit 4 (since Linux 2.6.24)
              Dump ELF headers.
       bit 5 (since Linux 2.6.28)
              Dump private huge pages.
       bit 6 (since Linux 2.6.28)
              Dump shared huge pages.

По умолчанию установлены следующие биты: 0, 1, 4 (если CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS опция конфигурации ядра включена) и 5. Значение этого файла отображается в шестнадцатеричном формате. (The таким образом, значение по умолчанию отображается как 33.) Страницы ввода-вывода с отображением в памяти, такие как буфер кадров, никогда не выгружаются, и виртуальные страницы DSO всегда сбрасываются, независимо от coredump_filter значение.

...

Этот файл предоставляется, только если ядро ​​было собрано с Вариант конфигурации CONFIG_ELF_CORE.

0 голосов
/ 27 января 2011

Я не уверен, возможно ли установить, какую часть памяти выгружать.

С man 5 core

дисковый файл, содержащий образ памяти процессав момент завершения

В качестве опции вы можете обрезать основной файл, используя setrlimit с параметром RLIMIT_CORE.

...