[英]“svc #128” breaking in to debugger unexpectedly - how to debug?
有一系列StackOverflow问题,提到在svc #128
指令后意外插入调试器。 我本人在处理此问题时,想问一些有关何时以及为什么发生这种情况的一般性问题。
svc #128
是什么? svc #128
或svc 0x80
调用是ARM指令集中的“ Supervisor Call
”(《 ARM文档》 )。 您需要查看寄存器值以指示正在调用的内容。
汇编程序示例:
libsystem_kernel.dylib`__pthread_kill:
0x195557268: movz x16, #328 // NOTE THIS VALUE
0x19555726c: svc #128
0x195557270: b.cc 0x195557288 ; __pthread_kill + 32
...
在“ 内核系统调用”表中查找movz
值(在这种情况下为#328
)。 对于#328
,它对应于pthread_kill
,它与上面列出的方法名称匹配。 调用该中断时,该中断将紧接svc
之后的指令,在本例中为b.cc
指令。
注意,LLDB也会中断某些线程到线程的信号,例如SIGUSR2,即使它是有意且正确的。 您可以配置Xcode忽略它并继续执行而不会出现问题:
感谢Notlikethat的投入
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.