【问题标题】:how can I tell if I am in ARM mode or Thumb mode in gdb?如何判断我在 gdb 中是处于 ARM 模式还是 Thumb 模式?
【发布时间】:2014-03-26 21:22:23
【问题描述】:

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

【问题讨论】:

    标签: gdb arm thumb


    【解决方案1】:

    我正在使用这个小 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
    

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

    【讨论】:

    • 这适用于我在 GDB 8.2 上的实验,但我想知道 GDB 从哪里获取信息,因为 DDI0487 da 说 CPSR[5]res0,你应该从 @987654325 阅读 PSTATE.P @,并且 SPSR 似乎无法从用户模式访问。
    • 请记住,这个答案来自 2014 年,指的是 ARMv7,您链接到的文档是针对 ARMv8 的。 PSTATE 仅在 ARMv8 中引入,并占用了一些以前的 CPSR 位。
    • 是的,我明白了。这仍然有效,这很棒:-)
    猜你喜欢
    • 1970-01-01
    • 2012-11-29
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2019-09-08
    • 1970-01-01
    相关资源
    最近更新 更多