在某些情况下,gdb不会在下一条指令处停止

时间:2019-04-30 22:23:23

标签: assembly arm gdb

在gdb下使用以下代码时

.global main
main:
         push    {r0-r12,lr}
         bl      cls
         ldr     r0,=texte
a:       ldrb    r1,[r0],#1
         pop     {r0-r12,pc}

cls:     push    {r0-r2,lr}
         pop     {r0-r2,pc}

texte:  .asciz "Hello World!"

如果在行ldr r0,=texte处放置一个断点,然后执行“ next”,则该程序不会在下一条指令处停止。它会一直执行到最后。 但是,如果我删除了bl cls指令,或者我删除了标签“ a:”,则“ next”可以正常工作,即它在“ ldrb” inst处停止。
我真的不明白为什么。 这段代码没有任何意义。只是从更大的程序中提取出来的,可以重现问题。

0 个答案:

没有答案