Существуют ли какие-либо инструменты для просмотра / редактирования памяти пользовательского пространства запущенных процессов в Linux?
Это был бы отличный инструмент обучения.
Существуют ли какие-либо инструменты для просмотра / редактирования памяти пользовательского пространства запущенных процессов в Linux?
Это был бы отличный инструмент обучения.
Память процесса доступна в виде файла /proc/12345/mem
где 12345 - это идентификатор процесса. Вы пока не сможете чему-то научиться непосредственно у него. Первое, что нужно выяснить, это какие части сопоставлены; эта информация доступна в /proc/12345/maps
и /proc/12345/smaps
. Записи в /proc
задокументированы в документации ядра по адресу Documentation/filesystems/proc.txt
. Команда lsof
предоставит информацию о файлах, которые процесс отобразил в памяти, в более удобочитаемом виде.
Может быть более поучительно посмотреть на запущенный процесс с помощью отладчика. Обычный отладчик под Linux - это Gdb. Gdb имеет простой интерфейс командной строки; DDD и Emacs предоставляют дружественные интерфейсы. Для достижения наилучших результатов посмотрите на программу, в которой все еще есть символы отладки и источник которой доступен (то есть посмотрите на программу, которую вы только что скомпилировали с помощью -g
и не удалили).
Вы также должны знать о strace
для наблюдения за системными вызовами, выполняемыми процессом, и ltrace
для просмотра (некоторых) вызовов библиотеки.