Получение карты памяти собственного процесса в QNX

В Linux, если мы посмотрим на /proc/self/maps:

00400000-004ef000 r-xp 00000000 08:01 12845058                           /bin/bash
006ef000-006f0000 r--p 000ef000 08:01 12845058                           /bin/bash
006f0000-006f9000 rw-p 000f0000 08:01 12845058                           /bin/bash
006f9000-006ff000 rw-p 00000000 00:00 0
00d5a000-010a2000 rw-p 00000000 00:00 0                                  [heap]
7f6fe582a000-7f6fe5835000 r-xp 00000000 08:01 1048595                    /lib/x86_64-linux-gnu/libnss_files-2.19.so
7f6fe5835000-7f6fe5a34000 ---p 0000b000 08:01 1048595                    /lib/x86_64-linux-gnu/libnss_files-2.19.so
7f6fe5a34000-7f6fe5a35000 r--p 0000a000 08:01 1048595                    /lib/x86_64-linux-gnu/libnss_files-2.19.so
7f6fe5a35000-7f6fe5a36000 rw-p 0000b000 08:01 1048595                    /lib/x86_64-linux-gnu/libnss_files-2.19.so

Мне нужна информация, такая как имя пути и начальный адрес для Qnx. Как я могу получить эту информацию?

Мой анализ говорит, что в Qnx нет файла /proc/self/maps.


person Swapnil    schedule 04.01.2016    source источник
comment
Не могли бы вы принять мой ответ, если сочтете его полезным?   -  person Shaibal    schedule 28.01.2016


Ответы (2)


У нас есть собственный файл в QNX!

Адресное пространство представлено двоичным файлом с именем as в каждой папке в /proc. /proc/self/as содержит адресное пространство текущего процесса.

Проблема в том, что это не читается человеком напрямую. Вам нужно использовать devctl(), чтобы прочитать его. Ниже приведена ссылка на все команды devctl, касающиеся декодирования адресного пространства.

http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_cookbook%2Fs3_procfs.html

Пример — devctl("/proc/self/as",DCMD_PROC_TIDSTATUS,&debug_data, sizeof(debug_data)

Эта команда предоставит вам отладочные данные потока в структуре struct _debug_thread_info.

Точно так же DCMD_PROC_PAGEDATA и DCMD_PROC_MAPINFO можно использовать для получения информации о сопоставлении сегментов (в linux это делает файл maps) информации об адресном пространстве процесса.

Надеюсь это поможет.

person Shaibal    schedule 06.01.2016

Попробуйте использовать это:

pidin -p<process> mapinfo
person Dmitry Tabakov    schedule 09.01.2016