C GDB显示特定内存地址中的R/W权限

C GDB显示特定内存地址中的R/W权限,c,linux,memory-management,permissions,gdb,C,Linux,Memory Management,Permissions,Gdb,我在MatlabSimulink中进行了一个仿真,它使用了一个SO库文件和我的algo代码。我想知道使用GDB的特定内存地址的读/写权限。例如,我关心了解此变量的内存权限: (gdb) p &CalValid $3 = (const WORD *) 0x91f6005c <CalValid> 我之所以需要它,是因为即使变量是const,我在代码的其他地方也有mprotect()更改cont变量的内存权限。AFAIK,没有用于此的内置命令。但是,如果您获取进程ID(info

我在MatlabSimulink中进行了一个仿真,它使用了一个SO库文件和我的algo代码。我想知道使用GDB的特定内存地址的读/写权限。例如,我关心了解此变量的内存权限:

(gdb) p &CalValid
$3 = (const WORD *) 0x91f6005c <CalValid>

我之所以需要它,是因为即使变量是const,我在代码的其他地方也有
mprotect()
更改cont变量的内存权限。

AFAIK,没有用于此的内置命令。但是,如果您获取进程ID(
info proc
),在Linux中,您可以读取
/proc/PID/maps
伪文件,它反映了正在调试的进程中的实际内存映射;找到包含符号的地址范围,该行的第三个字段具有保护模式(
rwxsp
,其中
s
表示共享,而
p
表示私有或写时复制)。因此,如果GDB中的
show configuration
使用python显示
,那么您可以向GDB编写python扩展来为您提供这个新命令。
`/appl/matlab2010a32/bin/glnx86/MATLAB', file type elf32-i386.
0x8048134->0x8048147 at 0x00000134: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
0x8048148->0x8048168 at 0x00000148: .note.ABI-tag ALLOC LOAD READONLY DATA HAS_CONTENTS
...
0x0000->0x00c4 at 0x00001fa0: .comment READONLY HAS_CONTENTS
0x0000->0x0010 at 0x00002064: .gnu_debuglink READONLY HAS_CONTENTS