При чтении/proc/$PID/maps Вы получаете регионы расширенной памяти. Существует ли способ вывести одно из этого регионы?
$ cat /proc/18448/maps
...[snip]...
0059e000-005b1000 r-xp 00000000 08:11 40 /usr/local/lib/libgstlightning.so.0.0.0
005b1000-005b2000 r--p 00012000 08:11 40 /usr/local/lib/libgstlightning.so.0.0.0
005b2000-005b3000 rw-p 00013000 08:11 40 /usr/local/lib/libgstlightning.so.0.0.0
...[snip]...
Спасибо
Нет! Вызовите ptrace ()
с PTRACE ATTACH
. Затем откройте / proc /
, найдите смещение области и прочтите длину области, как указано в / proc / maps
.
Вот программа , которую я написал , которая делает это на C. Вот модуль, который я написал , который делает это на Python ( и привязка ptrace ). В завершение - программа , которая выгружает все области процесса в файлы .
Наслаждайтесь!
Вы можете присоединить GDB к процессу, а затем выгрузить область памяти длиной X слов, начиная с позиции L, следующим образом: x / Xw L
.
Присоединить gdb при запуске процесса очень просто: gdb ./executable
, затем запустите
. Если вам нужно подключиться к запущенному процессу, запустите gdb, затем gdb attach pid
, где pid - это идентификатор процесса, который вам нужен.
Использование dd (1):
sudo dd if=/dev/mem bs=1 skip=$(( 16#0059e000 - 1 )) \
count=$(( 16#005b1000 - 16#0059e000 + 1)) | hexdump -C