这里是我的disas代码:GDB不能访问内存地址错误
0x0804844d <+0>: push %ebp
0x0804844e <+1>: mov %esp,%ebp
0x08048450 <+3>: and $0xfffffff0,%esp
0x08048453 <+6>: sub $0x20,%esp
0x08048456 <+9>: movl $0x8048540,(%esp)
0x0804845d <+16>: call 0x8048310 <[email protected]>
0x08048462 <+21>: lea 0x1c(%esp),%eax
0x08048466 <+25>: mov %eax,0x4(%esp)
0x0804846a <+29>: movl $0x8048555,(%esp)
0x08048471 <+36>: call 0x8048320 <[email protected]>
0x08048476 <+41>: mov 0x1c(%esp),%eax
0x0804847a <+45>: cmp $0x208c,%eax
0x0804847f <+50>: jne 0x804848f <main+66>
0x08048481 <+52>: movl $0x8048558,(%esp)
0x08048488 <+59>: call 0x8048310 <[email protected]>
0x0804848d <+64>: jmp 0x804849b <main+78>
=> 0x0804848f <+66>: movl $0x8048569,(%esp)
0x08048496 <+73>: call 0x8048310 <[email protected]>
0x0804849b <+78>: mov $0x0,%eax
0x080484a0 <+83>: leave
0x080484a1 <+84>: ret
什么,我特林检查为$ 0x208c。当我键入x/xw 0x208c时,它给我回错误,说错误地址0x208c无法访问内存。当我输入Info寄存器并查看eax时,它会显示我提供的值。所以基本上这个程序比较两个值,并根据这些值打印出来。问题是,这是来自大学的作业,我没有得到代码。希望你能帮助。谢谢。
[手指在空中]你传递了一个非法参数?你坐在那里,在调试器前面。我们可以做什么,你不能,特别是没有源代码?这是一个非常奇怪的任务,要求你解决没有源的东西... –
我终于想出使用打印语句,而不是x/xw可以请你解释为什么打印工作和x没有? – Ojs
$ 0x208c是绝对值,不是内存地址! –