无法从android ndk中的堆栈跟踪中获取行号

时间:2013-03-18 07:00:43

标签: android debugging java-native-interface native cocos2d-x

我在使用共享库时在Android中获得以下堆栈跟踪。当我尝试使用ndk-stack时,它给出错误说“无法在模块/ibgame.so中找到地址80ce4188的例程信息” 我真的想找到例程崩溃的行。

栈跟踪

03-18 12:07:00.480: I/DEBUG(21702): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
03-18 12:07:00.490: I/DEBUG(21702): Build fingerprint: 'samsung/GT-S5670/GT-S5670:2.3.4/GINGERBREAD/XWKQ2:user/release-keys'
03-18 12:07:00.490: I/DEBUG(21702): pid: 22914, tid: 22957  >>> com.xxx.yyyyo <<<
03-18 12:07:00.490: I/DEBUG(21702): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 3c3c3c3c
03-18 12:07:00.490: I/DEBUG(21702):  r0 00000001  r1 46e9f96c  r2 002624e8  r3 3c3c3c3c
03-18 12:07:00.490: I/DEBUG(21702):  r4 80fa1474  r5 0026c6a8  r6 46cce7ed  r7 46030f30
03-18 12:07:00.490: I/DEBUG(21702):  r8 46e9fb70  r9 46030f28  10 46030f14  fp 45110b30
03-18 12:07:00.490: I/DEBUG(21702):  ip 80fa14e8  sp 46e9fa00  lr 80d20eb3  pc 80ce4188  cpsr 00000030
03-18 12:07:00.490: I/DEBUG(21702):  d0  000000003f800000  d1  0000000000000000
03-18 12:07:00.490: I/DEBUG(21702):  d2  416fca053f800000  d3  418c000000000000
03-18 12:07:00.490: I/DEBUG(21702):  d4  0023000000000000  d5  46fffe00c7000000
03-18 12:07:00.490: I/DEBUG(21702):  d6  3f000000c7000000  d7  46fffe003f800000
03-18 12:07:00.500: I/DEBUG(21702):  d8  0000000000000000  d9  0000000000000000
03-18 12:07:00.500: I/DEBUG(21702):  d10 0000000000000000  d11 0000000000000000
03-18 12:07:00.500: I/DEBUG(21702):  d12 0000000000000000  d13 0000000000000000
03-18 12:07:00.500: I/DEBUG(21702):  d14 0000000000000000  d15 0000000000000000
03-18 12:07:00.500: I/DEBUG(21702):  scr 60000012
03-18 12:07:00.910: I/ActivityManager(10055): Start proc android.process.media for content provider com.android.providers.downloads/.DownloadProvider: pid=23002 uid=10024 gids={1015, 2001, 3003}
03-18 12:07:01.220: D/Finsky(22861): [1] 2.run: Loaded library for account: [LhT0qWhfRR1R8V6hKkpCiWF5Pjw]
03-18 12:07:01.320: I/DEBUG(21702):          #00  pc 80ce4188  /mnt/asec/com.xxx.yyyyo-1/lib/libgame.so
03-18 12:07:01.320: I/DEBUG(21702):          #01  lr 80d20eb3  /mnt/asec/com.xxx.yyyyo-1/lib/libgame.so
03-18 12:07:01.320: I/DEBUG(21702): code around pc:
03-18 12:07:01.320: I/DEBUG(21702): 80ce4168 f864f7ff 1c221c2b ab29e056 f7ff1c18 
03-18 12:07:01.320: I/DEBUG(21702): 80ce4178 2c00f85d e015d05b 23a09a05 58d3005b 
03-18 12:07:01.320: I/DEBUG(21702): 80ce4188 3351681b 681a33ff 23a09905 58c9005b 
03-18 12:07:01.320: I/DEBUG(21702): 80ce4198 98059b33 009b3350 330418c3 1c08681b 
03-18 12:07:01.320: I/DEBUG(21702): 80ce41a8 47901c19 23ae9a05 58d3005b 33529a05 
03-18 12:07:01.320: I/DEBUG(21702): code around lr:
03-18 12:07:01.320: I/DEBUG(21702): 80d20e90 f7cf1c18 1c03fb7b 320c681a 99016812 
03-18 12:07:01.320: I/DEBUG(21702): 80d20ea0 47901c18 f048e022 1c03fee3 f7cf1c18 
03-18 12:07:01.320: I/DEBUG(21702): 80d20eb0 1c03fb6d 9b039303 d00b2b00 681b9b03 
03-18 12:07:01.320: I/DEBUG(21702): 80d20ec0 681b3308 1c109a03 1c034798 d1012b02 
03-18 12:07:01.320: I/DEBUG(21702): 80d20ed0 e0002301 2b002300 9b03d008 330c681b 
03-18 12:07:01.320: I/DEBUG(21702): stack:
03-18 12:07:01.320: I/DEBUG(21702):     46e9f9c0  47bac008  
03-18 12:07:01.320: I/DEBUG(21702):     46e9f9c4  01000000  
03-18 12:07:01.320: I/DEBUG(21702):     46e9f9c8  80fa1474  
    03-18 12:07:01.320: I/DEBUG(21702):     46e9f9cc  80fa1474  
03-18 12:07:01.320: I/DEBUG(21702):     46e9f9d0  0026c6a8  

我的 Application.mk 文件是

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions -DCOCOS2D_DEBUG=1
APP_OPTIM := debug

Android.mk 文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := game_shared

LOCAL_MODULE_FILENAME := libgame


LOCAL_SRC_FILES := main.cpp ../../Classes/AppDelegate.cpp \
    ../../Classes/HelloWorldScene.cpp \

LOCAL_CFLAGS := -g
LOCAL_CFLAGS += -ggdb
LOCAL_CFLAGS += -01

LOCAL_LDLIBS +=  -llog -ldl

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes     \
$(LOCAL_PATH)/../../libs/Box2d \

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static box2d_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions) \
$(call import-module,Box2D)

NDK-STACK 命令

D:\>ndk-stack -sym D:\Dev\cocos2d-2.0-x-2.0.4\XXXX\proj.android\obj\local\armeabi -dump "D:\Dev\Others\logs notes\18-3-1-crash.txt"
********** Crash dump: **********
Build fingerprint: 'samsung/GT-S5670/GT-S5670:2.3.4/GINGERBREAD/XWKQ2:user/release-keys'
pid: 22914, tid: 22957  >>> com.xxx.yyyyo<<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 3c3c3c3c
Stack frame #00  pc 80ce4188  /mnt/asec/com.xxx.yyyyo-1/lib/libgame.so: Unable to locate routine information for address 80ce4188 in module D:\Dev\cocos2d-2.0-x-2.0.4\XXXX\proj.android\obj\local\armeabi/libgame.so

1 个答案:

答案 0 :(得分:0)

在Android.mk中使用以下内容

LOCAL_CFLAGS:= -g

您可以使用以下方式检查.so的符号:

nm libgame.so