gdb调试汇编的一点问题`
有这么一段汇编代码(movtest.s):
- .section .data
- values:
- .int 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60
- .section .text
- .globl _start
- _start:
- nop
- movl $values, %edi
- movl $100, 4(%edi)
- movl $1, %edi
- movl values(, %edi, 4), %ebx
- movl $1, %eax
- int $0x80
复制代码
然后我是这么汇编和链接的:
as -o movtest.o movtest.s -g
ld -o movtest movtest.o
然后进入gdb里面, movl $values, %edi是怎么也执行不了, 下面是错误提示
- Warning:
- Cannot insert breakpoint -2.
- Error accessing memory address 0x8048074: Input/output error.
复制代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
调用100号,系统调用。
不知道你这个shellcode是干吗用的?
你是要设置断点?
objdump -D movtest.o
看看
系统调用号100 ?啥意思?
我是说在gdb里movl $values, %edi怎么也执行不了, 设置了一个断点
复制代码
...
发现values变成了一个,,, 类似于函数的标签`
我试了,能执行,能断住,一点问题没有。
嗯, 我发现是在64位的系统上总出问题, 32位的就Ok..
在64bit os上,你怎么编译、怎么连接的? 估计是这里的错误。