Coredump на флешке что это

Обновлено: 09.05.2024

Если вы устанавливаете ESXi 7.0 на локальное хранилище очень небольшого объема, например на USB/SD карту, то можете столкнуться с алармом в Summary хоста:

« No coredump target has been configured. host core dumps cannot be saved »

Когда нет

После установки ESXi на носитель, на котором ему недостаточно места для дамп файла, сам ESXi проверяет, доступны ли ему какие-либо VMFS датасторы. И если да, то на одном из них, выбранном случайно, создается папка vmkdump, а внутри нее coredump файл хоста. Если VMFS хранилища доступны ESXi хосту по software ISCSI или software FCoE, то на них coredump файл не создается.

Создание coredump файла происходит автоматически на ESXi хостах начиная с версии 5.5, если не создан coredump раздел при установке. Мы можем в этом убедиться сами. Нужно зайти в консоль нашего ESXi после установки на SD/USB. Можно по SSH или через DCUI. Выполним команду:

И если у нас есть доступное хосту VMFS хранилище, то мы увидим, что у нас присутствует coredump файл, хотя мы его и не конфигурировали для этого хоста.

Поэтому наш аларм «No coredump target has been configured. host core dumps cannot be saved» может не верно отражать действительность, да к тому же привлекать внимание. Мы может отключить его на хосте, если coredump-ы куда-то настроены, или же нам просто неугодно его лицезреть. Для этого нужно отредактировать Advanced Setting хоста под названием UserVars.SuppressCoredumpWarning, задав в значении 1 вместо 0. После этого аларм сразу же пропадет.

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

  • Сконфигурировать расположение coredump-ов в другом месте. Это может быть раздел или сетевое расположение.
  • Отключить хранение coredump-ов в файле и удалить файлы.
  • Отключить функцию автосоздания coredump файлов изменив значение Advanced Setting хоста VMkernel.Boot.autoCreateDumpFile с true на false.

Когда правдив

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

Конфигурация coredump, генерация, анализ и примеры анализа

Ключевые слова: coredump、core_pattern、coredump_filter и многое другое.

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

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

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

Если вам нужно использовать ulimit для установки, вы можете использовать ulimit -c, чтобы проверить, поддерживает ли текущая система coredump. Если он равен 0, это означает, что coredump закрыт.

к ulimit -c unlimited Вы можете открыть coredump.

По умолчанию файл coredump хранится в том же каталоге, что и исполняемый файл, а имя файла - core.

в состоянии пройти /proc/sys/kernel/core_pattern Сделайте настройки.

Через echo "core-% e-% p-% s-% t"> / proc / sys / kernel / core_pattern.

Под каждым процессом есть узел coredump_filter. /proc/<pid>/coredump_filter 。

Настроив coredump_filter, вы можете выбрать, какой контент выгрузить в основной файл во время coredump.

Значение coredump_filter по умолчанию - 0x33, что означает, что вся анонимная память, страницы заголовков ELF и содержимое частной памяти hugetlb будут сохранены при выполнении coredump.

coredump_filter может быть унаследован дочерними процессами.Вы можете ввести 0xXX> / proc / self / coredump_filter, чтобы установить coredump_filter текущего процесса.

Среди них MMF_DUMP_FILTER_SHIFT равно 2, поэтому flags и coredump_filter имеют следующее соответствие.

В do_signal () судите, запускать ли coredump в соответствии с сигналом, конечно, это также связано с пределом coredump, флагами mm-> и так далее.

После выполнения условия coredump файл coredump генерируется do_coredump (), а ядро ​​генерируется binfmt-> core_dump ().

2.1 Каковы условия запуска coredump?

Когда ядро ​​вернется в пользовательское пространство, оно вызоветdo_signal() Обработка сигнала.

В get_signal () определите, вызовет ли сигнал coredump. Эти сигналы включают SIGQUIT、SIGILL、SIGTRAP、SIGABRT、SIGFPE、SIGSEGV、SIGBUS、SIGSYS、SIGXCPU、SIGXFSZ 。


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

2.2 Как сгенерировать coredump?

Ядро linux поддерживает множество linux_binfmt, наиболее часто используемым здесь является ELF. К

Итак, binfmt в do_coredump () - это elf_format, а binfmt-> core_dump () - это elf_coredump ().

Чтобы определить, является ли файл файлом coredump, вы можете использовать команду readelf, если тип - CORE (Core file).

Или судите через файловую команду.

Давайте создадим простой пример создания coredump, а затем проанализируем его с помощью gdb.

3.1 пример coredump

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

gcc -ggdb3 -std=c99 -Wall -Wextra -pedantic -o main.out main.c

3.2 coredump + анализ gdb

Используйте ulimit -c unlimited, чтобы включить функцию coredump, и выполните ./main.out, чтобы сгенерировать файл ядра.

Какой сигнал вызвал отображение coredump (SIGSEGV) процесса через ядро ​​gdb ./main.out? В каком файле (main.cc)? В какой функции (myfunc ())? Код конкретного места? Ждите информации.

Для более детального анализа методов core + gdb, пожалуйста, обратитесь к "Автономный анализ через core + gdb", вам необходимо загрузить динамическую библиотеку в процессе анализа, вы можете обратиться к"Путь поиска динамической библиотеки GDB》。

Пока что, наверное, резюмировал настройки coredump ( ulimit/core_pattern/coredump_filter )? Условия, запускающие coredump ( SIG_KERNEL_COREDUMP_MASK )? Coredump генерирует основной файловый процесс ( do_coredump () )? Как GDB распознает файлы ядра ( 《 Как GDB восстанавливает информацию динамической библиотеки из файла Coredump 》 )? Как использовать gdb для анализа файлов ядра и поиска проблем ( gdb->backtrace )?

Тривиальная задачка: что будет, если запустить вот такую программу?

Это означает безусловное падение из-за нарушения защиты памяти. Если пользователь разрешил создание coredump файлов (например, для командного интерпретатора bash это делается командой):

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

После чего командой bt (back trace) можно точно установить место в программе, в котором произошла ошибка. Естественно, для удобства, программа должна быть скомпилирована с включенной отладочной информацией.

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

Неискушенный пользователь обычно жмет Don't send , и затем программа благополучно падает, и не останется никакой информации произошедшей ошибке. Конечно, программа может вести подробное журналирование, но часто ошибки подобного рода редко удается локализовать по журналам.

Я слышал, что может так случиться, что после нажатия Send Error Report Майкрософт с вами свяжется и поможет решить проблему. Со мной такого ни разу не случалось, увы.

В Windows тоже есть схожий механизм создания “на лету” образов памяти работающего процесса, но для его использования надо немного потрудиться.

Windows предоставляет механизм исключений, чем-то схожий с исключениями в С++ и системными сигналами в UNIX. На С++ эти исключения похожи try-catch синтаксисом, а на UNIX — тем, что можно перехватывать исключительные ситуации (например, ошибки) в программе типа нашей (для UNIX можно было бы перехватить сигнал SIGSEGV и получить управление при возникновении подобной ошибки).

Естественно, сигналы в UNIX используются не только для этого.

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

Данный модуль создает статический объект coredumpInitializer , конструктор которого вызывается до функции main() . Конструктор устанавливает специальный обработчик для системных исключений, в котором в файл и записывается образ памяти текущего процесса при возникновении системных ошибок. Имя файла содержит идентификатор процесса, идентификатор потока и текущее время. Этот файл можно открыть в Visual Studio просто запустив его, либо в самой студии в меню File->Open->Project/Solution выбрать этот файл, указав его тип как Dump files . Далее надо запустить программу через отладчик, нажав F5 , и отладчик остановится на месте возникновения ошибки. Естественно, для работы на уровне исходного текста необходимо наличие файла с расширением .PDB, содержащего символьную информацию, в том каталоге, где расположен ваш coredump файл. Файл с раширением .PDB обычно создается при компиляции с включенной отладочной информацией, например, при использования ключа /Zi .

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

Для компиляции необходима библиотека DbgHelp.lib . Она обычно входит в состав Windows SDK в составе студии. Также получившийся исполняемый файл main.exe будет использовать динамическую библиотеку DbgHelp.dll . DbgHelp.dll входит в состав так называемых redistributable файлов, то есть которые вы имеете право распространять вместе с программой на случай, если у клиента нет этой dll’ки. Эта dll’ка с большой вероятностью находится у вас в каталоге C:\WINDOWS\system32 .

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

Пока я не придумал, как сделать для модуля coredump.cpp автоматизированный unit-тест. Проблема в том, что тут надо как-то подавить вывод окна с ошибкой (см. картинку выше). Если это сделать, то тест может быть вполне себе автоматизированным.

Более подробная информация вопросу создания образов памяти процесса есть в хорошей статье “Effective minidumps”.

Вирус ярлыки на флешке лечение

Сегодня будем разбираться c вирусом, который превращает папки и файлы на флешке в ярлыки. Выясним как удалить данный вирус и при этом сохранить все файлы.

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

Убеждаемся, что папки и файлы целые

Для этого зажимаем Windows + R и вставляем команду «control.exe folders» откроется окно с параметрами папок переходим на вкладку вид и ищем там два параметра:

  • Скрывать защищенные системные файлы (рекомендуется) — снимаем галочку
  • Показывать скрытые файлы и папки — устанавливаем переключатель.

Теперь ваши папки на флешке будут видны, но они будут прозрачными.

Находим и удаляем вирус через свойства ярлыка

Кликаем правой кнопкой на ярлык «свойства» там нас интересует строка «Объект». Она довольно длинная, но в ней есть путь к вирусу. В моем случае, строка двойного запуска выглядела так:

  • «%windir%\system32\cmd.exe /c “start %cd%RECYCLER\6dc09d8d.exe &&%windir%\explorer.exe %cd%support»

Как мы видим сам вирус имеет название 6dc09d8d.exe и находится в папке Recycle на самой флешке. Удаляем данный файл вместе с папкой Recycle.

Удаляем вирус с помощью антивируса

Скачиваем антивирус допустим Dr.Web CureIt! он себя хорошо зарекомендовал. Запускаем антивирус выбираем флешку и ждем пока он найдет и удалит вирусы. Потом нужно вернуть стандартные атрибуты для файлов и папок это можно сделать двумя способами.

Первый меняем атрибуты через командную строку для этого зажимаем Windows +R вставляем CMD нажимаем ENTER. Откроется черное окно командной строки в ней нужно ввести такие команды:

  • cd /d f:\ нажать ENTER, где f:\ — это буква вашей флешки ( с помощью данной команды мы переходим на флешку)
  • attrib -s -h /d /s нажать ENTER — эта команда сбросит атрибуты и папки станут видимыми.
  • Расшифровка атрибутов R - разрешает или запрещает атрибут « Только для чтения » , S - превращает файл или папку в системный, H - скрываем или показываем файлы и папки, D - обработка файлов и каталогов, +/- установка /удаление атрибута

Второй меняем атрибуты через bat файл для этого создаем текстовый файл на флешке записываем в неё следующий текст attrib -s -h /d /s и сохраняем с названием 1.bat и после запускаем его.
Если файлов много, то возможно потребуется несколько минут для выполнения команды. Так же если есть возможность используем Dr.Web LiveDisk

Автономный метод удаления вируса

В блокноте создаем файл и копируем туда ниже перечисленный текс после сохраняем его как avto.bat (скачать готовый файл) кидаем на флешку и запускаем от имени администратора. После запуска компьютер попросит ввести букву, соответствующую вашей флешке, что нужно сделать. После этого он удалить папку RECYCLER, файл автозапуска autorun.inf и вернёт атрибуты папкам, которые стали ярлыками. Вероятнее всего вирус будет удален.
:lable
cls
set /p disk_flash="Vvedite bukvu vashei fleshki: "
cd /D %disk_flash%:
if %errorlevel%==1 goto lable
cls
cd /D %disk_flash%:
del *.lnk /q /f
attrib -s -h -r autorun.*
del autorun.* /F
attrib -h -r -s -a /D /S
rd RECYCLER /q /s
explorer.exe %disk_flash%:

Удаление вируса через реестр

В некоторых случаях вирусы прописывают себя в автозапуск системы. Нажмите клавиши Win + R, в появившемся окне введите regedit и нажмите Enter. Проверьте руками следующие ветки реестра на наличие подозрительных записей:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run – эти программы запускаются при загрузке компьютера
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run – программы, автоматически запускаемые при входе текущего пользователя

Удалите все подозрительные записи и незнакомые программы

Удаление вируса вручную

  • Во временной папке Temp C:\users\%username%\AppData\Local\Temp ищем файл с необычным расширением .pif и удаляем его (можно воспользоваться поиском).
  • Проверяем также папку C:\Users\<<Пользователь>>\Appdata\Roaming\. в ней не должно быть исполняемых файлов с расширение *.EXE и *.BAT. Удаляем все подозрительные файлы.

Восстановление системы

Если вирус недавно появился, то данный способ может помочь.
Нажимаем Windows + R откроется окно выполнить вставляем туда «rstrui.exe» откроется окошко восстановление системы нажимаем далее выбираем нужную точку выставления по дате потом система спросит вы уверены нажимаем «OK» и начнётся процесс выставления системы. После восстановления должно появится окошко о удачно окончании процесса.

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

Вирус ярлыки на флешке лечение

Сегодня будем разбираться c вирусом, который превращает папки и файлы на флешке в ярлыки. Выясним как удалить данный вирус и при этом сохранить все файлы.

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

Убеждаемся, что папки и файлы целые

Для этого зажимаем Windows + R и вставляем команду «control.exe folders» откроется окно с параметрами папок переходим на вкладку вид и ищем там два параметра:

  • Скрывать защищенные системные файлы (рекомендуется) — снимаем галочку
  • Показывать скрытые файлы и папки — устанавливаем переключатель.

Теперь ваши папки на флешке будут видны, но они будут прозрачными.

Находим и удаляем вирус через свойства ярлыка

Кликаем правой кнопкой на ярлык «свойства» там нас интересует строка «Объект». Она довольно длинная, но в ней есть путь к вирусу. В моем случае, строка двойного запуска выглядела так:

  • «%windir%\system32\cmd.exe /c “start %cd%RECYCLER\6dc09d8d.exe &&%windir%\explorer.exe %cd%support»

Как мы видим сам вирус имеет название 6dc09d8d.exe и находится в папке Recycle на самой флешке. Удаляем данный файл вместе с папкой Recycle.

Удаляем вирус с помощью антивируса

Скачиваем антивирус допустим Dr.Web CureIt! он себя хорошо зарекомендовал. Запускаем антивирус выбираем флешку и ждем пока он найдет и удалит вирусы. Потом нужно вернуть стандартные атрибуты для файлов и папок это можно сделать двумя способами.

Первый меняем атрибуты через командную строку для этого зажимаем Windows +R вставляем CMD нажимаем ENTER. Откроется черное окно командной строки в ней нужно ввести такие команды:

  • cd /d f:\ нажать ENTER, где f:\ — это буква вашей флешки ( с помощью данной команды мы переходим на флешку)
  • attrib -s -h /d /s нажать ENTER — эта команда сбросит атрибуты и папки станут видимыми.
  • Расшифровка атрибутов R - разрешает или запрещает атрибут « Только для чтения » , S - превращает файл или папку в системный, H - скрываем или показываем файлы и папки, D - обработка файлов и каталогов, +/- установка /удаление атрибута

Второй меняем атрибуты через bat файл для этого создаем текстовый файл на флешке записываем в неё следующий текст attrib -s -h /d /s и сохраняем с названием 1.bat и после запускаем его.
Если файлов много, то возможно потребуется несколько минут для выполнения команды. Так же если есть возможность используем Dr.Web LiveDisk

Автономный метод удаления вируса

В блокноте создаем файл и копируем туда ниже перечисленный текс после сохраняем его как avto.bat (скачать готовый файл) кидаем на флешку и запускаем от имени администратора. После запуска компьютер попросит ввести букву, соответствующую вашей флешке, что нужно сделать. После этого он удалить папку RECYCLER, файл автозапуска autorun.inf и вернёт атрибуты папкам, которые стали ярлыками. Вероятнее всего вирус будет удален.
:lable
cls
set /p disk_flash="Vvedite bukvu vashei fleshki: "
cd /D %disk_flash%:
if %errorlevel%==1 goto lable
cls
cd /D %disk_flash%:
del *.lnk /q /f
attrib -s -h -r autorun.*
del autorun.* /F
attrib -h -r -s -a /D /S
rd RECYCLER /q /s
explorer.exe %disk_flash%:

Удаление вируса через реестр

В некоторых случаях вирусы прописывают себя в автозапуск системы. Нажмите клавиши Win + R, в появившемся окне введите regedit и нажмите Enter. Проверьте руками следующие ветки реестра на наличие подозрительных записей:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run – эти программы запускаются при загрузке компьютера
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run – программы, автоматически запускаемые при входе текущего пользователя

Удалите все подозрительные записи и незнакомые программы

Удаление вируса вручную

  • Во временной папке Temp C:\users\%username%\AppData\Local\Temp ищем файл с необычным расширением .pif и удаляем его (можно воспользоваться поиском).
  • Проверяем также папку C:\Users\<<Пользователь>>\Appdata\Roaming\. в ней не должно быть исполняемых файлов с расширение *.EXE и *.BAT. Удаляем все подозрительные файлы.

Восстановление системы

Если вирус недавно появился, то данный способ может помочь.
Нажимаем Windows + R откроется окно выполнить вставляем туда «rstrui.exe» откроется окошко восстановление системы нажимаем далее выбираем нужную точку выставления по дате потом система спросит вы уверены нажимаем «OK» и начнётся процесс выставления системы. После восстановления должно появится окошко о удачно окончании процесса.

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

Читайте также: