解决方案 »

  1.   

    用一工具解析该段log,输出一下提示,不知道该如何理解这个提示:
    BFD: 小错误: 行号段出错.
    DexDataMap.cpp:0              _ZL19Check_CallIntMethodP7_JNIEnvP8_jobjectP10_jmethodIDz
    BFD: 小错误: 行号段出错.
    libgcc2.c:0                   _ZN7androidL11send_reportEiPKcj.clone.0
      

  2.   

    死在库里了,一般这种情况我都是在可疑的地方多打印几条log,把有关的一些值打印出来看。慢慢缩小范围。
      

  3.   

    找到死在那个地方了,但是我不知道怎么解决,代码如下:
     int iKeyBoardMode = 0;
        int state = 0;    state = keyInfo & 0xff;
    iKeyBoardMode = (keyInfo >> 24) & 0xff;    if(iKeyBoardMode == 2 || state == 2 || state == 32)
        {
            AutoMutex _l(mLock);
            JNIEnv* env = NULL;
            // gUsbHostServInfo.g_vm->AttachCurrentThread(&env, NULL);
            env = jniEnv();
            LOGDI("key call back");
            if(env == NULL) {
                LOGDE("can't get env.");
                return ;
            }
            env->CallVoidMethod(gKeyHandleInfo.nativeKeyHandleObj,gKeyHandleInfo.handleKey,(jint)keyInfo);
            if (env->ExceptionCheck()) {
                LOGDE("An exception was thrown by callback '%s'.", "handleKey");
                // LOGE_EX(env);
                env->ExceptionClear();
            }
            // gUsbHostServInfo.g_vm->DetachCurrentThread();
        }
      

  4.   

    在调用CallVoidMethod时出错,这个函数的作用是在native层,当符合要求的数据要给java层来处理,我按照android inputmanage中callback的方式,在c++调用java层接口,但是程序运行时,有30分钟能正常运行,运行一段时间后出现atal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 3204 (DataHandleThrea),本地库中是有一个线程,在线程中调用java层的接口;在开始运行是,把java层的对象传递给了native并通过env->NewGlobalRef(keyhandcallbackObj);进行保存了