询问关于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


...全文
505 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pl853555 2011-05-09
  • 打赏
  • 举报
回复
print struct
Cannot access memory at address
一品川 2010-11-21
  • 打赏
  • 举报
回复
学习了
ddc 2010-11-20
  • 打赏
  • 举报
回复
(gdb)mai i s
steptodream 2010-11-20
  • 打赏
  • 举报
回复
好高深
cpaal 2010-11-20
  • 打赏
  • 举报
回复
关于楼上。gdb可以read的呀哈哈。就是不能write. 也比较郁闷刚还工作HP的unix不熟悉呀。
justkk 2010-11-19
  • 打赏
  • 举报
回复
这个不见得是说你的程序不能访问0x407f4594 这个地址吧..
也许是说gdb 自己访问不了这个地址,无法获取进一步的信息..
猜测哈
louyong0571 2010-11-19
  • 打赏
  • 举报
回复
楼主200分哦,可惜不会,帮顶吧

19,613

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧