Android NDK中出现了什么样的错误?

时间:2014-01-15 06:46:50

标签: android android-ndk

我正在创建一个带有音频的应用程序,但我已经在OPENES SL中创建了原生音频播放器并且我正在设置其播放速率,因此它给出了异常错误,此应用程序死后我将显示日志

  *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
  I/DEBUG(17995): Build fingerprint: 'SEMC/MK16i_1249-7510/MK16i:4.0.4/4.1.B.0.587      
 /tL1_3w:user/release-keys'
 I/DEBUG(17995): pid: 30880, tid: 30880  >>> PACKAGE NAME <<<
 I/DEBUG(17995): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
 I/DEBUG(17995):  r0 00000000  r1 00000002  r2 25545b4e  r3 25545b4e
 I/DEBUG(17995):  r4 3b7f2004  r5 00000002  r6 00000000  r7 364e3cc8
 I/DEBUG(17995):  r8 7e9346a8  r9 364e3cc0  10 00000000  fp 7e9346bc
 I/DEBUG(17995):  ip 2aaae108  sp 7e934698  lr 3b7ee8a5  pc 3b7ee8aa  cpsr 00000030
 I/DEBUG(17995):  d0  6472656767756265  d1  69616475536f6928
 I/DEBUG(17995):  d2  2f6d796172685363  d3  726576696563656f
 I/DEBUG(17995):  d4  367815f8367815c0  d5  3678166836781630
 I/DEBUG(17995):  d6  367816d8367816a0  d7  3678174836781710
 I/DEBUG(17995):  d8  0000000000000000  d9  0000000000000000
 I/DEBUG(17995):  d10 0000000000000000  d11 0000000000000000
 I/DEBUG(17995):  d12 0000000000000000  d13 0000000000000000
 I/DEBUG(17995):  d14 0000000000000000  d15 0000000000000000
 I/DEBUG(17995):  d16 000000012b54c880  d17 4010000000000000
 I/DEBUG(17995):  d18 0000000000000000  d19 0000000000000000
 I/DEBUG(17995):  d20 3f1155e54e7e8408  d21 0000000000000000
 I/DEBUG(17995):  d22 0000000000000000  d23 3fede16b9c24a98f
 I/DEBUG(17995):  d24 3e66376972bea4d0  d25 3fc39a09d078c69f
 I/DEBUG(17995):  d26 0000000000000000  d27 0000000000000000
 I/DEBUG(17995):  d28 0000000000000000  d29 0000000000000000
 I/DEBUG(17995):  d30 0000000000000000  d31 0000000000000000
 I/DEBUG(17995):  scr 60000012
 I/DEBUG(17995):          #00  pc 000018aa  /mnt/asec/Package Name-1/lib/libaudio-tools.so (Java_Package Name_receiver_AudioReceiver_NsetRate)
 I/DEBUG(17995):          #01  pc 0001ec30  /system/lib/libdvm.so (dvmPlatformInvoke)
 I/DEBUG(17995):          #02  pc 00058c70  /system/lib/libdvm.so (_Z16dvmCallJNIMethodPKjP6JValuePK6MethodP6Thread)
 I/DEBUG(17995): code around pc:
 I/DEBUG(17995): 3b7ee888 4c0ab538 447c1c15 2b006923 4908d00c  8..L..|D#i.+...I
 I/DEBUG(17995): 3b7ee898 20044a08 447a4479 edc4f7ff 04296a20  .J. yDzD.... j).
 I/DEBUG(17995): 3b7ee8a8 68031409 4798681b 46c0bd38 00003772  ...h.h.G8..Fr7..
 I/DEBUG(17995): 3b7ee8b8 000016b8 00001736 4b09b510 2000b082  ....6......K... 
 I/DEBUG(17995): 3b7ee8c8 6a1a447b d0082a00 466c6813 685b3406  {D.j.*...hlF.4[h
 I/DEBUG(17995): code around lr:
 I/DEBUG(17995): 3b7ee884 00003790 4c0ab538 447c1c15 2b006923  .7..8..L..|D#i.+
 I/DEBUG(17995): 3b7ee894 4908d00c 20044a08 447a4479 edc4f7ff  ...I.J. yDzD....
 I/DEBUG(17995): 3b7ee8a4 04296a20 68031409 4798681b 46c0bd38   j)....h.h.G8..F
 I/DEBUG(17995): 3b7ee8b4 00003772 000016b8 00001736 4b09b510  r7......6......K
 I/DEBUG(17995): 3b7ee8c4 2000b082 6a1a447b d0082a00 466c6813  ... {D.j.*...hlF
 I/DEBUG(17995): stack:
 I/DEBUG(17995):     7e934658  3b9add97  /system/lib/libwilhelm.so
 I/DEBUG(17995):     7e93465c  00000000  
 I/DEBUG(17995):     7e934660  7e9346a8  [stack]
 I/DEBUG(17995):     7e934664  364e3cc4  
 I/DEBUG(17995):     7e934668  00000000  
 I/DEBUG(17995):     7e93466c  001af51c  [heap]
 I/DEBUG(17995):     7e934670  00000000  
 I/DEBUG(17995):     7e934674  25545b4e  
 I/DEBUG(17995):     7e934678  00000000  
 I/DEBUG(17995):     7e93467c  3b7f2004  /mnt/asec/Package name-1/lib/libaudio-tools.so
 I/DEBUG(17995):     7e934680  00000002  
 I/DEBUG(17995):     7e934684  00000000  
 I/DEBUG(17995):     7e934688  364e3cc8  
 I/DEBUG(17995):     7e93468c  3b7ee8a5  /mnt/asec/Package name-1/lib/libaudio-tools.so
 I/DEBUG(17995):     7e934690  df0027ad  
 I/DEBUG(17995):     7e934694  00000000  
 I/DEBUG(17995): #00 7e934698  364e3d28  
 I/DEBUG(17995):     7e93469c  3677dd08  /dev/ashmem/dalvik-LinearAlloc (deleted)
 I/DEBUG(17995):     7e9346a0  00012b68  [heap]
 I/DEBUG(17995):     7e9346a4  2b2bdc34  /system/lib/libdvm.so
 I/DEBUG(17995): #01 7e9346a8  364e3cbc  
 I/DEBUG(17995):     7e9346ac  00000001  
 I/DEBUG(17995):     7e9346b0  2bdea110  /dev/ashmem/dalvik-heap (deleted)
 I/DEBUG(17995):     7e9346b4  00012b78  [heap]
 I/DEBUG(17995):     7e9346b8  7e934938  [stack]
 I/DEBUG(17995):     7e9346bc  2b2f7c73  /system/lib/libdvm.so
 I/BootReceiver(283): Copying /data/tombstones/tombstone_05 to DropBox (SYSTEM_TOMBSTONE)
 I/ActivityManager(283): Process PACKAGE NAME (pid 30880) has died.

以下是我设定费率的ndk代码

JNIEXPORT void Java_PACKAGE NAME_receiver_AudioReceiver_NsetRate(
    JNIEnv* env, jclass clazz, jint rate) {
if (NULL != fdPlayerPlay) {

    SLresult result;
    LOGI("SET RATE");
    result = (*fdPlaybackRate)->SetRate(fdPlaybackRate, rate);

    assert(SL_RESULT_SUCCESS == result);

}
}

所以请任何人告诉我这是什么错误,我怎样才能解决它?

修改

我已经从here获取了原生播放器代码,但它仍然给出同样的错误请帮助我,我无法弄清楚错误是什么:(

1 个答案:

答案 0 :(得分:-1)

使用NDK addr2line将pc 000018aa转换为代码中的行号。

目前尚不清楚fdPlayerPlayfdPlaybackRate代表什么,以及如何声明这些内容。但是以下行可能有拼写错误。而不是

result =(* fdPlaybackRate) - &gt; SetRate(fdPlaybackRate,rate);

应该可以阅读

result =(* fdPlayerPlay) - &gt; SetRate(fdPlaybackRate,rate);

if (NULL != fdPlayerPlay) {

应该可以阅读

if (NULL != fdPlaybackRate) {

(如OpenSLEngine.cpp:165