Debugging 半托管(监管呼叫)

Debugging 半托管(监管呼叫),debugging,arm,Debugging,Arm,.text反汇编代码部分 __exit: 0x0: 0xe59f1008 LDR R1, [PC, #0x8] ; [0x10] 0x20026 (131110) 0x4: 0xe3a00018 MOV R0, #24 ; 0x18 0x8: 0xef123456 SVC #0x123456 0xc: 0xeafffffb B __exit 我正在调用main函数中的exit()函数。上述装配代码出现在拆解窗口中 如何执行B\u exit指令 我的源代码是main() 这是一个。退出的

.text
反汇编代码部分

__exit:
 0x0: 0xe59f1008 LDR R1, [PC, #0x8] ; [0x10] 0x20026 (131110)
 0x4: 0xe3a00018 MOV R0, #24 ; 0x18
 0x8: 0xef123456 SVC #0x123456
 0xc: 0xeafffffb B __exit
我正在调用main函数中的
exit()
函数。上述装配代码出现在拆解窗口中

如何执行
B\u exit
指令

我的源代码是
main()


这是一个。

退出的
b\uu
只会将您返回到函数的开头

在嵌入式环境中,通常没有程序出口;相反,你要么进入一个无止境的循环,要么从头开始


这个片段进入一个无休止的循环,调用半宿主SVC以获得一个显式断点,从而将您带入调试器。从那里重新启动将执行分支并重新执行通向断点的代码。

在B_uuuexit调用之后,下面的disassembly例程出现DC32 131110,有人能帮助我如何获得所有这些语句覆盖的c源代码以下代码未使用;
b
指令确保了这一点。很可能没有C代码,或者如果有,它将是一个宏解析为
asm
语句。您可以详细解释一下“从那里重新启动将执行分支并重新执行通向断点的代码”。执行该代码时,半宿主调用将闯入调试器,“下一条指令”指向
b\uu exit
,设备停止。重新启动设备将执行分支指令,并重新执行半宿主调用。