zoukankan      html  css  js  c++  java
  • Andoid 利用ndk-stack定位崩溃代码

    Android NDK自从版本R6开始, 提供了一个工具ndk-stack( 在目录{ndk_root}/中 ). 这个工具能自动分析dump下来的crash log, 将崩溃时的调用内存地址和c++代码一行一行对应起来.

    执行命令ndk-stack --help

    Usage:
       ndk-stack -sym <path> [-dump <path>]
    
          -sym  Contains full path to the root directory for symbols.
          -dump Contains full path to the file containing the crash dump.
                This is an optional parameter. If ommited, ndk-stack will
                read input data from stdin
    • -dump参数很容易理解, 即dump下来的log文本文件. ndk-stack会分析此文件.
    • -sym参数就是你android项目下,编译成功之后,obj目录下的文件.

    示范一下:

    $ adb logcat | ndk-stack -sym ./obj/local/armeabi
    ********** Crash dump: **********
    Build fingerprint: 'htc_wwe/htc_bravo/bravo:2.3.3/
    GRI40/96875.1:user/release-keys'
    pid: 1723, tid: 1743  >>> com.packtpub.droidblaster <<<
    signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000c
    Stack frame #00  pc 00010a2c  /data/data/com.packtpub.droidblaster/lib/libdroidblaster.so: Routine update in /home/packt/Project/Chapter11/DroidBlaster_Part11/jni/TimeService.cpp:25
    Stack frame #01  pc 00009fcc  /data/data/com.packtpub.droidblaster/lib/libdroidblaster.so: Routine onStep in /home/packt/Project/Chapter11/DroidBlaster_Part11/jni/DroidBlaster.cpp:53
    Stack frame #02  pc 0000a348  /data/data/com.packtpub.droidblaster/lib/libdroidblaster.so: Routine run in /home/packt/Project/Chapter11/DroidBlaster_Part11/jni/EventLoop.cpp:49
    Stack frame #03  pc 0000f994  /data/data/com.packtpub.droidblaster/lib/libdroidblaster.so: Routine android_main in /home/packt/Project/Chapter11/DroidBlaster_Part11/jni/Main.cpp:31

    ref from:http://www.cnblogs.com/jhzhu/p/3801640.html
  • 相关阅读:
    Python中修改字符串的四种方法
    一些有用的资源分享(工具+电子书)
    什么是DFX测试
    测试笔,测试纸杯
    测试用例八大要素
    软件测试的16种测试类型
    python作业(二)
    python作业(一)
    菜鸟学python(第一天)函数及模块使用
    [Spring MVC]
  • 原文地址:https://www.cnblogs.com/beeasy/p/5048974.html
Copyright © 2011-2022 走看看