Android Studio中的lldb:选择框架不起作用

时间:2015-12-27 10:10:51

标签: android android-studio lldb

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

select frame

似乎没有任何效果:

  

(lldb)bt       *线程#1:tid = 30637,0x400e429e libc.so strncpy, name = 'WHATEVER', stop reason = breakpoint 2.1 frame #0: 0x400e429e libc.so strncpy         *帧#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.

有任何想法/建议吗?

1 个答案:

答案 0 :(得分:1)

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

如果您在Android Studio用户界面中选择某个框架,然后在控制台中执行com_tags,它是否会显示您在用户界面中选择的框架?如果有效,那么frame info也应报告正确的帧寄存器,因此您现在可以将其用作解决方法。

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