MIT6.S081使用gdb-multiarch调试在ecall处打断点后stepi无法进入的问题

发现Lec06 Isolation & system call entry/exit (Robert)中使用gdb-multiarch只在ecall处打断点不会进入trampoline.S中的uservec,需要在手动在下一条中打断点

解决方法:

(gdb) b *0xe08
Breakpoint 1 at 0xe08
(gdb) c
Continuing.

Thread 1 hit Breakpoint 1, 0x0000000000000e08 in ?? ()
=> 0x0000000000000e08:	73 00 00 00	ecall
(gdb) b *$stvec
Breakpoint 2 at 0x3ffffff000
(gdb) si

Thread 1 hit Breakpoint 2, 0x0000003ffffff000 in ?? ()
=> 0x0000003ffffff000:	73 10 05 14	csrw	sscratch,a0
为什么在这里打断点?去回顾以下ecall指令会做的事🤣
(gdb) b *$stvec效果同下
(gdb) p/x $stvec
$1 = 0x3ffffff000
(gdb) b *0x3ffffff000
Breakpoint 3 at 0x3ffffff000
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值