Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要调试这部分arm汇编代码,
for3: ldrb r3,[r4,#0] ldr r0,=format2 mov r1,r3 bl printf add r4,r4,#1 cmp r3,#'\0' bne for3
它包含printf来自 c 的语句,当我调试它时,它会printf通过数百行代码。我需要跳过外部库函数,只浏览我的代码。怎么做?
printf
使用finishGDB 中的命令让应用程序继续运行,直到它从当前堆栈帧返回。(可简写为fin。)
finish
fin
使用ni( nexti) 而不是si跳过函数调用:
ni
nexti
si
nexti nexti arg ni 执行一条机器指令,但如果是函数调用,则继续执行直到函数返回。参数是重复计数,如next.
nexti nexti arg ni
nexti arg
执行一条机器指令,但如果是函数调用,则继续执行直到函数返回。参数是重复计数,如next.
next
虽然完成的技巧(一旦你输入函数),如果你需要重复执行此操作,还请查看 gdb 的跳过命令。