android - 在 android native 堆栈跟踪中查找错误

标签 android android-ndk

我的应用程序遇到一些问题。

我的 Activity 不是 native Activity ,而是在 java 线程 run() 方法中调用 native 代码(并且它将在所有 Activity 生命周期中继续运行) 有时, Activity 会无声地崩溃(没有任何提示)并返回到我的应用程序的上一个 Activity 。 我正在跟踪跟踪日志,但使用 ndk-trace 只能摆脱 libc.so 中的调用, 我在“堆栈”中看到对我的 native 库的一些调用,有一种方法可以从堆栈中恢复我的源中发生崩溃的区域的一些指示?

11-01 07:54:43.670: I/DEBUG(28785): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***                                 
11-01 07:54:43.670: I/DEBUG(28785): Build fingerprint: 'samsung/GT-I9100/GT-I9100:2.3.5/GINGERBREAD/XWKI8:user/release-keys'        
11-01 07:54:43.670: I/DEBUG(28785): pid: 28798, tid: 6728  >>> dalmax.games.turnBasedGames.checkers <<<                             
11-01 07:54:43.670: I/DEBUG(28785): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad                                  
11-01 07:54:43.670: I/DEBUG(28785):  r0 00000027  r1 deadbaad  r2 a0000000  r3 00000000                                             
11-01 07:54:43.670: I/DEBUG(28785):  r4 00000001  r5 00000000  r6 4cf15c10  r7 00000000                                             
11-01 07:54:43.670: I/DEBUG(28785):  r8 4cf15b70  r9 479a0fac  10 479a0f94  fp 4cf158b4                                             
11-01 07:54:43.670: I/DEBUG(28785):  ip afd466a8  sp 4cf15860  lr afd196f1  pc afd161c0  cpsr 60000030                              
11-01 07:54:43.670: I/DEBUG(28785):  d0  414000003f800000  d1  0001000140d00000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d2  00ff00ff00ff00ff  d3  00ff00ff00ff00ff                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d4  0000000000000000  d5  0000000000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d6  4110000000000000  d7  0000000000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d8  000025cb6997a050  d9  0000003244480000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d10 3fc0000042960000  d11 4052c00000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d12 0000000000000000  d13 0000000000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d14 0000000000000000  d15 0000000000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d16 0000000700000001  d17 0000000000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d18 0000000000000000  d19 0000000000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d20 0000000000000000  d21 0000000000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d22 0000000000000000  d23 0000000000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d24 0000000000000000  d25 0000000000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d26 0000000000000000  d27 0000000000000000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d28 0002aaa80002aaa8  d29 0002aaa80002aaa8                                                     
11-01 07:54:43.670: I/DEBUG(28785):  d30 0001000000010000  d31 0001000000010000                                                     
11-01 07:54:43.670: I/DEBUG(28785):  scr 20000010                                                                                   
11-01 07:54:43.740: I/DEBUG(28785):          #00  pc 000161c0  /system/lib/libc.so                                                  
11-01 07:54:43.740: I/DEBUG(28785):          #01  lr afd196f1  /system/lib/libc.so                                                  
11-01 07:54:43.740: I/DEBUG(28785): code around pc:                                                                                 
11-01 07:54:43.740: I/DEBUG(28785): afd161a0 2c006824 e028d1fb b13368db c064f8df                                                    
11-01 07:54:43.740: I/DEBUG(28785): afd161b0 44fc2401 4000f8cc 49124798 25002027                                                    
11-01 07:54:43.740: I/DEBUG(28785): afd161c0 f7f57008 2106ea16 eb8af7f6 460aa901                                                    
11-01 07:54:43.740: I/DEBUG(28785): afd161d0 f04f2006 95015380 95029303 eef0f7f5                                                    
11-01 07:54:43.740: I/DEBUG(28785): afd161e0 462aa905 f7f52002 f7f5eefc 2106ea02                                                    
11-01 07:54:43.740: I/DEBUG(28785): code around lr:                                                                                 
11-01 07:54:43.740: I/DEBUG(28785): afd196d0 4a0e4b0d e92d447b 589c41f0 26004680                                                    
11-01 07:54:43.740: I/DEBUG(28785): afd196e0 686768a5 f9b5e006 b113300c 47c04628                                                    
11-01 07:54:43.740: I/DEBUG(28785): afd196f0 35544306 37fff117 6824d5f5 d1ef2c00                                                    
11-01 07:54:43.740: I/DEBUG(28785): afd19700 e8bd4630 bf0081f0 00027e6c ffffff88                                                    
11-01 07:54:43.740: I/DEBUG(28785): afd19710 b086b570 f602fb01 9004460c a804a901                                                    
11-01 07:54:43.740: I/DEBUG(28785): stack:                                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15820  afd426a4                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15824  000b6ec8                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15828  00000015                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf1582c  afd187b9  /system/lib/libc.so                                                     
11-01 07:54:43.740: I/DEBUG(28785):     4cf15830  afd4274c                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15834  afd426f8                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15838  00000000                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf1583c  afd196f1  /system/lib/libc.so                                                     
11-01 07:54:43.740: I/DEBUG(28785):     4cf15840  00000001                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15844  4cf15874                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15848  4cf15c10                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf1584c  00000000                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15850  4cf15b70                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15854  afd18a13  /system/lib/libc.so                                                     
11-01 07:54:43.740: I/DEBUG(28785):     4cf15858  df002777                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf1585c  e3a070ad                                                                          
11-01 07:54:43.740: I/DEBUG(28785): #00 4cf15860  4cf158b4                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15864  afd18e01  /system/lib/libc.so                                                     
11-01 07:54:43.740: I/DEBUG(28785):     4cf15868  00596970                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf1586c  4cf15878                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15870  00000001                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15874  fffffbdf                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15878  8163d852  /data/data/dalmax.games.turnBasedGames.checkers/lib/libcheckersEngine.so
11-01 07:54:43.740: I/DEBUG(28785):     4cf1587c  8164301c                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15880  000001dc                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15884  8162f960  /data/data/dalmax.games.turnBasedGames.checkers/lib/libcheckersEngine.so
11-01 07:54:43.740: I/DEBUG(28785):     4cf15888  8162f7ec  /data/data/dalmax.games.turnBasedGames.checkers/lib/libcheckersEngine.so
11-01 07:54:43.740: I/DEBUG(28785):     4cf1588c  8163d71c  /data/data/dalmax.games.turnBasedGames.checkers/lib/libcheckersEngine.so
11-01 07:54:43.740: I/DEBUG(28785):     4cf15890  0000001b                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15894  003820a8                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf15898  00000000                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf1589c  4cf15c10                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf158a0  479a0fb4                                                                          
11-01 07:54:43.740: I/DEBUG(28785):     4cf158a4  8162ee10  /data/data/dalmax.games.turnBasedGames.checkers/lib/libcheckersEngine.so

最佳答案

好的,我解决了问题。

这是我的重载运算符 new 中的一个错误,使用了未受锁保护的静态成员,因此当从我的 native 代码中删除一个对象时,同时从 JNI 中删除另一个对象时接口(interface)线程,轰隆隆!

我没有从错误报告中找到任何有用的方法来解决此问题。 为了解决这个问题,我在 Visual Studio 中复制了这种情况(使用 2 个线程,并尝试调用 jni 接口(interface)的相同方法,即使它们未在 Visual Studio 测试项目中使用)以了解是什么问题。

无论如何,最后我可以发布我的应用程序:-)

关于android - 在 android native 堆栈跟踪中查找错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7964442/

相关文章:

android - 在同一应用中不同 Activity 的调用之间保留文本字段上的数据

android gallery 变成网格样式的菜单

java - 如果没有调试,为什么 Android Studio 会显示 "Waiting For Debugger"?

java - 如何访问 java android 中扩展 simpleOnGestureListener 的内部类内部的变量?

java - Android 计时关键游戏的触摸输入延迟问题。 onTouchEvent 调用之前是否有延迟?

opencv - 安装 android OpenCV 构建时无法定位错误

react-native - 从源代码构建 React Native 的 Yoga 错误

android - 构建cocos2d-x android项目失败: Unknown EABI object attribute 44

android - Cocos2d-x 3.13.1 : error with cocos run (Android)

java - 在 Android 中制作三秒计时器的最简单方法是什么?