如何在gdb中判断我是处于ARM模式还是Thumb模式?

dae*_*hee 5 gdb arm thumb

使用GDB调试ARMv7二进制文件时,除了查看指令长度外,有没有办法确定CPU当前处于哪种模式?(ARM,Thumb)

Nic*_*rth 9

我正在使用这个小gdb脚本来确定CPSR字段的当前状态,只需将其放在〜/ .gdbinit文件中,并在需要时调用arm_isa.

define arm_isa
  if ($cpsr & 0x20)
    printf "Using THUMB(2) ISA\n"
  else
    printf "Using ARM ISA\n"
  end
end
Run Code Online (Sandbox Code Playgroud)

它检查cpsr中的第5位,它指示当前状态并输出使用的ISA.