询问关于GDB中内存读写权限的问题。
cpaal 2010-11-19 04:14:43 同一个内存为什么我可以读但是不能写,如何判断内存的读写权限。
(gdb) x 0x407f4594
0x407f4594: 0x00000000
(gdb) set *(unsigned int*)0x407f4594 = 0x00000000
Cannot access memory at address 0x407f4594
代码中遇到的问题,是有一个core的产生,
异常的时候有2个寄存器:
r4: 40df4534 r5: 407f6964 (还有 arg0/r26:7f7f8a28, r20:ffff没有太大用处)
异常的代码是下边的第四行,
Program terminated with signal 11, Segmentation fault.
1, 0xc6ecbcd0 <fun名字不写了+0x78>: ldh 0xa(%r5),%r20
2, 0xc6ecbcd4 <fun名字不写了+0x7c>: shladd,l %r20,1,%r20,%ret0
3,0xc6ecbcd8 <fun名字不写了+0x80>: add,l %r3,%r22,%r4
4,0xc6ecbcdc <fun名字不写了+0x84>: ldw 8(%r4),%r26
问题:为什么方位r4有问题,我认为谢r26肯定没有问题。怀疑是由于内存40df4534不能访问。
但是为什么第一行就可以呢(r5和r4的内存不远呀)
注: r5的内存
(gdb) x 0x407f6964
0x407f6964: 0x00000000
(gdb) set *(unsigned int*)0x407f6964 = 0x0
Cannot access memory at address 0x407f6964