Как определить, какие инструкции процесс выполняет?

Я не знаю ни о каком существующем ранее совете относительно ESP на программном обеспечении RAID1; будучи спрошенным недавно, "что, если" на ALT форум Linux, я предложил поместить отдельный ESP на каждый диск и поддержать redundacy вручную, если он действительно нуждался в пути UEFI или просто идет BIOS путь.

Ваша установка кажется разумной, таким образом, стоит для регистрации ошибки против модуля установки загрузчика YaST (предоставьте ссылку здесь, если Вы делаете); в это время Вы могли бы попытаться пропустить установку загрузчика и установить ее вручную, в то время как загружавший некоторое способное спасательное изображение UEFI (например, этот, если существующее не сделает по некоторым причинам).

@itconlor: GRUB2 может загрузиться от LVM, но встроенное микропрограммное обеспечение UEFI ожидает, что Системный Раздел EFI будет "простым" разделом определенного типа (см. "Дисковые Структуры EFI").

8
30.07.2014, 05:24
2 ответа

Вы можете сделать это с помощью gdb : команды ni и si запускают по одной инструкции за раз. Команда n запускает следующую строку кода для большинства значений «next». Для n (и соответствующих s ) вы должны скомпилировать так, чтобы отладочные символы появлялись в исполняемом файле.

Этот ответ о переполнении стека дает несколько способов сделать это более или менее визуально.

Команда gdb : display / i $ pc показывает инструкцию перед ее выполнением. display $ pc показывает строку кода до того, как n или s выполнит его.

10
27.01.2020, 20:09

Запустите ps -l для идентификатора процесса и проверьте столбец S («состояние»). Если состояние R , значит, ваш процесс выполняет код. Если процесс остается в состоянии R и strace не показывает, что он выполняет какой-либо системный вызов, то процесс застревает в очень долгом, возможно, бесконечном вычислении. Если процесс находится и остается в состоянии D , то он блокируется системным вызовом. Для получения дополнительной информации о состояниях процессов см. Что указывает этот STAT процесса? , Что означает состояние «прерывистый сон»? и Что делать, если 'kill -9' делает не работает? .

Если процесс выполняет длительные вычисления, вы можете использовать Gdb (или другой отладчик), чтобы увидеть, что он делает. Если в исполняемом файле отсутствует отладочная информация (что обычно бывает, если вы не компилировали программу специально для этого), то отладчик сможет показать вам только машинные инструкции; если исполняемый файл содержит отладочную информацию, вы сможете увидеть имена функций в трассировке стека и так далее. Чтобы присоединить Gdb к процессу, запустите gdb / путь / к / исполняемому файлу 1234 , где 1234 - это идентификатор процесса. Команда s позволяет вам выполнять инструкции по одной за раз. Если вы не программист и не знакомы с тем, что должна делать программа, в этом сценарии мало шансов, что вы получите полезную информацию из Gdb.

6
27.01.2020, 20:09

Теги

Похожие вопросы