【问题标题】:lldb in Android Studio: select frame does not workAndroid Studio 中的 lldb:选择框架不起作用
【发布时间】:2016-04-01 11:18:11
【问题描述】:

我正在 Android Studio 1.5 中进行本机调试。问题是 lldb 查看了错误的帧(最底部),因此没有向我显示正确的寄存器值。

select frame

似乎没有任何作用:

(lldb) bt * 线程 #1:tid = 30637, 0x400e429e libc.sostrncpy, name = 'WHATEVER', stop reason = breakpoint 2.1 frame #0: 0x400e429e libc.sostrncpy * 帧 #1: 0x406ba1b0 libicuuc.so (lldb) 帧信息 帧 #1: 0x406ba1b0 libicuuc.so

(lldb) frame select 0
frame #0: 0x400e429e libc.so`strncpy
libc.so`strncpy:
->  0x400e429e <+0>: push   {r4, lr}
    0x400e42a0 <+2>: cbz    r2, 0x400e42c4            ; <+38>
    0x400e42a2 <+4>: subs   r1, #0x1
    0x400e42a4 <+6>: mov    r3, r0
(lldb) frame info
frame #1: 0x406ba1b0 libicuuc.so
(lldb) register read
General Purpose Registers:
        r4 = 0x40773ed4  
        r5 = 0x407762a8  
        r6 = 0x00000000
        r7 = 0x40745eb0  
        r8 = 0xbe9f2d30
        r9 = 0xbe9f2b20
       r10 = 0x400f8384  libc.so`__stack_chk_guard
       r11 = 0x77205d00
        sp = 0xbe9f2d30
        lr = 0x406ba1b1  
        pc = 0x75cdbd38
      cpsr = 0x200b0030
5 registers were unavailable.

有什么想法/建议吗?

【问题讨论】:

    标签: android android-studio lldb


    【解决方案1】:

    听起来 Android Studio 在执行每个命令后都会重置帧 - 可能是为了使其与 UI 显示的内容保持同步。您选择了第 0 帧,但随后应该显示第 0 帧信息的帧信息命令显示第 1 帧。

    如果您在 Android Studio UI 中选择某个框架,然后在控制台中执行 frame info,它会显示您在 UI 中选择的框架吗?如果这可行,那么register read 也应该报告正确的帧寄存器,因此您现在可以将其用作解决方法。

    如果 Android Studio 有错误报告器,您可能会提交有关此问题的错误。 lldb 支持保持 UI 和命令行同步,但 UI 必须采用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 2018-05-24
      • 2016-11-13
      • 1970-01-01
      相关资源
      最近更新 更多