我最近读到ARM上的Linux软件断点是在ARM模式下使用UND
指令和在Thumb模式下使用BKPT
指令实现的。为什么有2个单独的指令用于引发软件中断?
答案 0 :(得分:0)
Thumb兼容代码:
0000d564 <pthread_mutex_init>:
d564: e2503000 subs r3, r0, #0
d568: 03a00016 moveq r0, #22
d56c: 012fff1e bxeq lr
纯手臂:
form_response
arm bkpt 0xe7f001f0
thumb bkpt 0xde01
如果尝试使用arm bkpt并在函数中重写第一条指令: pthread_mutex_init一切都会好的,但是如果在pthread_mutexattr_setpshared中重写第一条指令,第二条指令也会被重写。
如果总是尝试使用thumb bkpt并在pthread_mutex_init中重写第一条指令,结果指令将无效。