GDB: как определить, помечен ли какой-то фрагмент памяти только для чтения - PullRequest
1 голос
/ 07 июля 2011

Я отлаживаю программу (в Solaris), которая может записывать в память, помеченную только для чтения, но я не знаю, как определить, действительно ли эта страница памяти помечена как доступная только для чтения.* Могу ли я сделать это определение с помощью GDB?Если нет, что я могу использовать?

Ответы [ 2 ]

2 голосов
/ 07 июля 2011

В Solaris вы можете просматривать адресное пространство процесса с помощью команды pmap , например, pmap <pid>. Это отобразит разрешения r / w / x для каждого сопоставления; вместе с другой информацией.

Пример из справочной страницы Solaris:

$ pmap 102905
102905:    sh
00010000    192K r-x--  /usr/bin/ksh
00040000      8K rwx--  /usr/bin/ksh
00042000     40K rwx--    [ heap ]
FF180000    664K r-x--  /usr/lib/libc.so.1
FF236000     24K rwx--  /usr/lib/libc.so.1
FF23C000      8K rwx--  /usr/lib/libc.so.1
FF250000      8K rwx--    [ anon ]
...
 total     1880K
1 голос
/ 07 июля 2011

Просмотр инструментов pmap и pmem.

...