[英]“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.