Android 来自本机崩溃的极短堆栈跟踪

Android 来自本机崩溃的极短堆栈跟踪,android,android-ndk,java-native-interface,libc,Android,Android Ndk,Java Native Interface,Libc,我将一个本地C++库移植到Android,我得到了下面的堆栈跟踪: 06-11 14:55:15.505: I/DEBUG(138): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 06-11 14:55:15.505: I/DEBUG(138): Build fingerprint: 'htc_asia_tw/htc_shooteru/shooteru:2.3.4/GRJ22/123848.4:user/rele

我将一个本地C++库移植到Android,我得到了下面的堆栈跟踪:

06-11 14:55:15.505: I/DEBUG(138): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-11 14:55:15.505: I/DEBUG(138): Build fingerprint: 'htc_asia_tw/htc_shooteru/shooteru:2.3.4/GRJ22/123848.4:user/release-keys'
06-11 14:55:15.515: I/DEBUG(138): pid: 5523, tid: 5535  >>> com.xxx <<<
06-11 14:55:15.515: I/DEBUG(138): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0128d1a8
06-11 14:55:15.515: I/DEBUG(138):  r0 0128d1a8  r1 45ba2577  r2 80808080  r3 00000000
06-11 14:55:15.515: I/DEBUG(138):  r4 45ba2ba8  r5 00000005  r6 00000000  r7 45ba24e4
06-11 14:55:15.515: I/DEBUG(138):  r8 45ba270c  r9 0128d1a8  10 00000001  fp 45ba2bac
06-11 14:55:15.515: I/DEBUG(138):  ip 00000073  sp 45ba2478  lr afd1b64b  pc afd151e8  cpsr 60000010
06-11 14:55:15.515: I/DEBUG(138):  d0  65526f666e496533  d1  6143646576656934
06-11 14:55:15.515: I/DEBUG(138):  d2  772f73746e656d34  d3  65636170736b7235
06-11 14:55:15.515: I/DEBUG(138):  d4  617262657a655a2f  d5  2f696e6a2f434f50
06-11 14:55:15.515: I/DEBUG(138):  d6  7262657a655a7451  d7  422f6e69616d2f61
06-11 14:55:15.515: I/DEBUG(138):  d8  0000000000000000  d9  0000000000000000
06-11 14:55:15.515: I/DEBUG(138):  d10 0000000000000000  d11 0000000000000000
06-11 14:55:15.515: I/DEBUG(138):  d12 0000000000000000  d13 0000000000000000
06-11 14:55:15.515: I/DEBUG(138):  d14 0000000000000000  d15 0000000000000000
06-11 14:55:15.515: I/DEBUG(138):  d16 0000000000000000  d17 41d3f57724c00000
06-11 14:55:15.515: I/DEBUG(138):  d18 3ff0000000000000  d19 0000000000000000
06-11 14:55:15.525: I/DEBUG(138):  d20 0000000000000000  d21 0000000000000000
06-11 14:55:15.525: I/DEBUG(138):  d22 3ff0000000000000  d23 0000000000000000
06-11 14:55:15.525: I/DEBUG(138):  d24 3ff0000000000000  d25 0000000000000000
06-11 14:55:15.525: I/DEBUG(138):  d26 0000000000000000  d27 0000000000000000
06-11 14:55:15.525: I/DEBUG(138):  d28 0000000000000000  d29 0000000000000000
06-11 14:55:15.525: I/DEBUG(138):  d30 0000000000000000  d31 0000000000000000
06-11 14:55:15.525: I/DEBUG(138):  scr 20000012
06-11 14:55:15.625: I/DEBUG(138):          #00  pc 000151e8  /system/lib/libc.so
06-11 14:55:15.625: I/DEBUG(138):          #01  pc 0001b648  /system/lib/libc.so
06-11 14:55:15.635: I/DEBUG(138): code around pc:
06-11 14:55:15.635: I/DEBUG(138): afd151c8 0a00003d e58d2004 e59d2004 e3120003 
06-11 14:55:15.635: I/DEBUG(138): afd151d8 1afffff6 e0800003 e3082080 e3482080 
06-11 14:55:15.635: I/DEBUG(138): afd151e8 e4901004 e0433000 f5d0f040 e041c3a2 
06-11 14:55:15.635: I/DEBUG(138): afd151f8 e00cc002 e1dcc001 04901004 1a000022 
06-11 14:55:15.635: I/DEBUG(138): afd15208 e041c3a2 e00cc002 e1dcc001 04901004 
06-11 14:55:15.635: I/DEBUG(138): code around lr:
06-11 14:55:15.635: I/DEBUG(138): afd1b628 b910c014 a018f8dd 9906e00e 0a00ebc9 
06-11 14:55:15.635: I/DEBUG(138): afd1b638 bfa8458a e007468a f8cd4648 f7f9c014 
06-11 14:55:15.635: I/DEBUG(138): afd1b648 f8ddeda0 4682c014 f10d2000 465c0ef8 
06-11 14:55:15.635: I/DEBUG(138): afd1b658 f80e4683 f8cd0c01 e14cb018 46d89709 
06-11 14:55:15.635: I/DEBUG(138): afd1b668 f0469f07 e00c0610 7ff00000 0002040d 
06-11 14:55:15.635: I/DEBUG(138): stack:
06-11 14:55:15.635: I/DEBUG(138):     45ba2438  00000000  
06-11 14:55:15.635: I/DEBUG(138):     45ba243c  00000022  
06-11 14:55:15.635: I/DEBUG(138):     45ba2440  45ba27f7  
06-11 14:55:15.635: I/DEBUG(138):     45ba2444  afd1965f  /system/lib/libc.so
06-11 14:55:15.635: I/DEBUG(138):     45ba2448  45ba270c  
06-11 14:55:15.635: I/DEBUG(138):     45ba244c  45ba253c  
06-11 14:55:15.635: I/DEBUG(138):     45ba2450  00000082  
06-11 14:55:15.635: I/DEBUG(138):     45ba2454  45ba253c  
06-11 14:55:15.635: I/DEBUG(138):     45ba2458  00000004  
06-11 14:55:15.635: I/DEBUG(138):     45ba245c  00000000  
06-11 14:55:15.635: I/DEBUG(138):     45ba2460  45ba24e4  
06-11 14:55:15.635: I/DEBUG(138):     45ba2464  45ba270c  
06-11 14:55:15.645: I/DEBUG(138):     45ba2468  45ba26cd  
06-11 14:55:15.645: I/DEBUG(138):     45ba246c  00000007  
06-11 14:55:15.645: I/DEBUG(138):     45ba2470  df002777  
06-11 14:55:15.645: I/DEBUG(138):     45ba2474  e3a070ad  
06-11 14:55:15.645: I/DEBUG(138): #00 45ba2478  45ba2ba8  
06-11 14:55:15.645: I/DEBUG(138):     45ba247c  afd1c17d  /system/lib/libc.so
06-11 14:55:15.645: I/DEBUG(138): #01 45ba2480  00000000  
06-11 14:55:15.645: I/DEBUG(138):     45ba2484  00000000  
06-11 14:55:15.645: I/DEBUG(138):     45ba2488  00000000  
06-11 14:55:15.645: I/DEBUG(138):     45ba248c  00000000  
06-11 14:55:15.645: I/DEBUG(138):     45ba2490  00000000  
06-11 14:55:15.645: I/DEBUG(138):     45ba2494  00000073  
06-11 14:55:15.645: I/DEBUG(138):     45ba2498  ffffffff  
06-11 14:55:15.645: I/DEBUG(138):     45ba249c  45ba24e4  
06-11 14:55:15.645: I/DEBUG(138):     45ba24a0  45ba251c  
06-11 14:55:15.645: I/DEBUG(138):     45ba24a4  80cbce76  /data/data/com.xxx/lib/libxxx.so
06-11 14:55:15.645: I/DEBUG(138):     45ba24a8  00000000  
06-11 14:55:15.645: I/DEBUG(138):     45ba24ac  00000000  
06-11 14:55:15.645: I/DEBUG(138):     45ba24b0  00000083  
06-11 14:55:15.645: I/DEBUG(138):     45ba24b4  45ba2577  
06-11 14:55:15.645: I/DEBUG(138):     45ba24b8  80cbce48  /data/data/com.xxx/lib/libxxx.so
06-11 14:55:15.645: I/DEBUG(138):     45ba24bc  afd42428  
06-11 14:55:15.645: I/DEBUG(138):     45ba24c0  00000000  
06-11 14:55:15.645: I/DEBUG(138):     45ba24c4  00000000  
06-11 14:55:15.505:I/DEBUG(138):******************************
06-11 14:55:15.505:I/DEBUG(138):构建指纹:“htc_asia_tw/htc_shooteru/shooteru:2.3.4/GRJ22/123848.4:用户/释放密钥”

06-11 14:55:15.515:I/DEBUG(138):pid:5523,tid:5535>>>com.xxx strlen为什么会出现分段错误应该很容易想象。也许你可以考虑可能发生这种情况的地方。这正是问题的目的——避免考虑可能发生这种情况的地方,而只是有一个堆栈跟踪……调试不是这样工作的。您可以在解释您确实拥有的信息时使用智能,也可以采取措施(插入代码、在调试器中运行、重新编写崩溃处理程序)在下次发生时收集更多信息。您甚至可能会问自己,在GUI应用程序中,vprintf()对您有什么好处,并在您使用时解决该问题。堆栈可能很容易损坏,因此如果堆栈跟踪较短,则您可能会怀疑是时候检查源代码以获取对堆栈变量的“数组越界”访问了