7

Существуют ли какие-либо инструменты для просмотра / редактирования памяти пользовательского пространства запущенных процессов в Linux?

Это был бы отличный инструмент обучения.

1 ответ1

5

Память процесса доступна в виде файла /proc/12345/mem где 12345 - это идентификатор процесса. Вы пока не сможете чему-то научиться непосредственно у него. Первое, что нужно выяснить, это какие части сопоставлены; эта информация доступна в /proc/12345/maps и /proc/12345/smaps . Записи в /proc задокументированы в документации ядра по адресу Documentation/filesystems/proc.txt . Команда lsof предоставит информацию о файлах, которые процесс отобразил в памяти, в более удобочитаемом виде.

Может быть более поучительно посмотреть на запущенный процесс с помощью отладчика. Обычный отладчик под Linux - это Gdb. Gdb имеет простой интерфейс командной строки; DDD и Emacs предоставляют дружественные интерфейсы. Для достижения наилучших результатов посмотрите на программу, в которой все еще есть символы отладки и источник которой доступен (то есть посмотрите на программу, которую вы только что скомпилировали с помощью -g и не удалили).

Вы также должны знать о strace для наблюдения за системными вызовами, выполняемыми процессом, и ltrace для просмотра (некоторых) вызовов библиотеки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .