我正在开发相关的流,我面对我的C模块的一些问题,本机应用程序...和我有什么是logcat的一些消息


下面是logcat的消息

INFO/DEBUG(28): Build fingerprint: 'generic/sdk/generic/:2.1-update1/ECLAIR/35983:eng/test-keys'
11-17 12:40:07.550: INFO/DEBUG(28): pid: 5957, tid: 5957  >>> com.mmstwo <<<
11-17 12:40:07.561: INFO/DEBUG(28): signal 11 (SIGSEGV), fault addr deadd00d
11-17 12:40:07.561: INFO/DEBUG(28):  r0 00000354  r1 00129100  r2 0000000c  r3 deadd00d
11-17 12:40:07.561: INFO/DEBUG(28):  r4 00000026  r5 ad07ff50  r6 00000000  r7 fffe72f8
11-17 12:40:07.579: INFO/DEBUG(28):  r8 afe3bdfc  r9 4509f020  10 00000000  fp 00135a40
11-17 12:40:07.590: INFO/DEBUG(28):  ip ad080160  sp bef28f90  lr afe14cf7  pc ad035452  cpsr 20000030
11-17 12:40:07.840: INFO/DEBUG(28):          #00  pc 00035452  /system/lib/libdvm.so
11-17 12:40:07.850: INFO/DEBUG(28):          #01  pc 00027a98  /system/lib/libdvm.so
11-17 12:40:07.869: INFO/DEBUG(28):          #02  pc 00027bba  /system/lib/libdvm.so
11-17 12:40:07.879: INFO/DEBUG(28):          #03  pc 0002d98e  /system/lib/libdvm.so

11-17 12:40:07.901: INFO/DEBUG(28):          #04  pc 0000142e  /data/data/com.mmstwo/lib/libnstreamer.so

这是一个表示哪个我使用的C类的行。


按照我的意见前一个问题 i,随后是拉胡尔定的url和倾倒我的.so文件到一个文本文件中。

这里是文本文件

 141e:  4a2d        ldr r2, [pc, #180]  (14d4 <Java_com_mmstwo_NativeParser_stringFromJNI+0x408>)
    1420:   4b2d        ldr r3, [pc, #180]  (14d8 <Java_com_mmstwo_NativeParser_stringFromJNI+0x40c>)
    1422:   2184        movs    r1, #132
    1424:   5846        ldr r6, [r0, r1]
    1426:   18aa        adds    r2, r5, r2
    1428:   18eb        adds    r3, r5, r3
    142a:   4651        mov r1, sl
    142c:   1c38        adds    r0, r7, #0
    142e:   47b0        blx r6
    1430:   4b2a        ldr r3, [pc, #168]  (14dc <Java_com_mmstwo_NativeParser_stringFromJNI+0x410>)
    1432:   4669        mov r1, sp

,从而每交在谷歌组和专门由尼克拉斯Ansman建议我已示出的片断这是在我的期望线142e

这里现在任何人都可以,谁可以告诉什么呢47b0 blx r6手段?

我知道这是什么东西汇编语言编写的,我不知道。所以,我需要你在了解该行的帮助。

在预先感谢

有帮助吗?

解决方案

blx跳转到由参数给出的地址;在这里,对当前装载在寄存器R6的地址。另外,返回地址(其在ldr后立即位于blx操作码即地址)被写入专用寄存器LR(作为“链接寄存器”)。

此对应于间接调用。在C它看起来像通过函数指针调用。在某些平台上与动态链接,一个简单的函数调用的函数也可以成为像你在这里看到的东西。

总之,寄存器转储显示R6在该点处为0,因此段错误。 R6从ldr操作码装上的地址1424此负载R6从什么地址R0 + R1,R1设定为132的正上方。 R0是用于第一个参数到C函数常规寄存器。

其他提示

确定与对谷歌一些怪物挖找到它。“

blx平均Branch and link with exchange (BLX),如果我没错它类似于return withValue类型的Java语句。

它帮助我开始在本地代码的调试也......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top