1
liwei 2014-07-24 14:00:25 +08:00
向进程发送ABORT信号生成core文件,然后用gdb打开core文件, bt
|
2
xdeng 2014-07-24 14:18:10 +08:00
打印函数的调用堆栈 系统api吧
|
3
bengol 2014-07-24 14:19:44 +08:00 1
参考gprof的实现, 跟踪FramePointer, 之前我用的是这个
|
4
xylophone21 2014-07-24 20:50:17 +08:00
2.使用Android提供的utils/CallStack.h,但是NDK中没有,这是不是意味着需要编译源码?
把机器里的库拷出来依赖-l一下就可以了 |
5
Akagi201 2014-07-25 11:03:14 +08:00
这个应该可以自己实现, 我以前一个同事实现过, 但是多线程下不准. 几乎没有用.
|
9
aWangami OP @xylophone21 有想法去尝试,后来发现依赖太...估计整个core都得弄下来还不知道行不行...so..不知道是否有更简便直接的方法
|
11
xylophone21 2014-07-25 13:14:45 +08:00 1
@aWangami 不麻烦啊,只把手机的里的库拷出来就行了,又没要你编译什么的.就算都拷出来,你的/system/lib目录能有多大?何况根本不需要.
MHAL_LDLIBS := -L$(PLT_PATH)/lib -L$(PLT_PATH)/../mtal_lib -L$(PLT_PATH)/../ts_player_lib -L$(PLT_PATH)/../smart_card/alcormicro \ -llog -lutils -lmedia -landroid_runtime -lgui -lcutils -lbinder LOCAL_LDLIBS := $(MHAL_LDLIBS) |
12
aWangami OP @xylophone21 是这样的..
假如现在我有一个文件需要使用CallStack.h的方法,那就需要#include<CallStack.h>是不,不然编译就过不了,然后CallStack有依赖了其他的头文件..这样一层一层的... |
13
xylophone21 2014-07-25 18:20:27 +08:00 1
@aWangami 都考呗,编译环境不差这点硬盘.多放点头文件怕什么?反正是调试用.
src=$1 if [ -z $src ]; then echo "Usage: $0 [android src folder]" exit 1 fi if [ ! -d $src ]; then echo "$src not exist" fi HEADER_FILES="$src/dalvik/libnativehelper/include $src/system/core/include $src/hardware/libhardware/include $src/external/skia/include $src/frameworks/base/include $src/frameworks/base/native/include $src/frameworks/base/opengl/include" tar -cvf header.tar $HEADER_FILES |
14
fungo 2014-07-25 18:43:13 +08:00 1
google-breakpad 可以主动 call 的
|
15
bombless 2014-07-26 01:52:34 +08:00
搞个源代码处理工具打桩吧
|
16
aWangami OP @xylophone21 找个时间试试看~
|