Android Studio中的lldb:选择帧不工作
我正在Android Studio 1.5中进行本机调试。问题是lldb查看错误的帧(最底层),因此没有向我显示正确的寄存器值Android Studio中的lldb:选择帧不工作,android,android-studio,lldb,Android,Android Studio,Lldb,我正在Android Studio 1.5中进行本机调试。问题是lldb查看错误的帧(最底层),因此没有向我显示正确的寄存器值 select frame 似乎没有任何效果: (lldb)英国电信 *线程#1:tid=30637,0x400e429e libc.sostrncpy,name='WHATEVER',stop reason=breakpoint 2.1 帧0:0x400e429e libc.sostrncpy *帧#1:0x406ba1b0 libicuuc.so (lldb)帧信息
select frame
似乎没有任何效果:
(lldb)英国电信
*线程#1:tid=30637,0x400e429e libc.sostrncpy,name='WHATEVER',stop reason=breakpoint 2.1
帧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.
(lldb)帧选择0
帧#0:0x400e429e libc.so`strncpy
libc.so`strncpy:
->0x400e429e:推送{r4,lr}
0x400e42a0:cbz r2,0x400e42c4;
0x400e42a2:subs r1,#0x1
0x400e42a4:mov r3,r0
(lldb)帧信息
帧#1:0x406ba1b0 libicuuc.so
(lldb)寄存器读取
一般用途登记册:
r4=0x40773ed4
r5=0x407762a8
r6=0x00000000
r7=0x40745eb0
r8=0xbe9f2d30
r9=0xbe9f2b20
r10=0x400f8384 libc.so`\u堆栈\u chk\u保护
r11=0x77205d00
sp=0xbe9f2d30
lr=0x406ba1b1
pc=0x75cdbd38
cpsr=0x200b0030
5个登记册不可用。
有什么想法/建议吗?听起来Android Studio在每个命令后都会重置框架-可能是为了让它与UI显示的内容保持同步。您选择了第0帧,但您的“帧信息”命令(该命令应显示第0帧的信息)将显示第1帧的信息 如果您在Android Studio UI中选择某个帧,然后在控制台中执行
frame info
,它是否会显示您在UI中选择的帧?如果这样做有效,那么寄存器读取
也应该报告正确帧的寄存器,因此您现在可以将其用作解决方法
如果Android Studio有bug reporter,您可能会提交一个关于此问题的bug。lldb支持保持UI和命令行同步,但UI必须采用它