NDK生成的so動態庫怎麼調試

    很多時候Android業務層開發,和SDK開發是分開的,SDK更多與NDK生成so,這期間雙方代碼不共享,對調試帶來很大難度,所以把一些方法彙總下:


需要用到工具:

  1. Android\SDK\platform-tools\adb
  2. NDK
  3. so生成庫中間文件:obj\local\armeabi-v7a  到這層即可,arm v8 同理
  4. 安卓手機肯定不能少了,還有APK 文件

步驟:

1. 啓動adb命令,如下:

adb logcat | ndk-stack -sym D:\workplace\****\obj\local\armeabi-v7a

 2. 啓動app,運行至崩潰地方

 3.如果NDK崩潰即可在終端打印 堆棧信息,進行分析即可,如下

********** Crash dump: **********
Build fingerprint: 'Xiaomi/polaris/polaris:10/QKQ1.190828.002/V11.0.1.0.QDGCNXM:user/release-keys'
pid: 16964, tid: 17013, name: w.myapplication  >>> com.ictt.www.myapplication <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x4
Stack frame 03-25 19:53:17.720 17063 17063 F DEBUG   :       #00 pc 00066d10  /data/app/com.ictt.www.myapplication-8q6kwRaor0fmisPtqEdPgg==/lib/arm/libiUAC.so (SipMsgAnalyse::InviteSdpMsgParser(eXosip_event*, InviteSdpMsg*&)+188) (BuildId: 57eb7f4d9f61c85e9e9d3477b463cde22d9cef45): Routine SipMsgAnalyse::InviteSdpMsgParser(eXosip_event*, InviteSdpMsg*&) at /home/ziloong/Desktop/iDAS/src/GBSip/ProtocolStack/analyse/SipMsgAnalyse.cpp:39
Stack frame 03-25 19:53:17.720 17063 17063 F DEBUG   :       #01 pc 0006035c  /data/app/com.ictt.www.myapplication-8q6kwRaor0fmisPtqEdPgg==/lib/arm/libiUAC.so (InviteHandle::execTaskEvent(eXosip_event*)+112) (BuildId: 57eb7f4d9f61c85e9e9d3477b463cde22d9cef45): Routine InviteHandle::execTaskEvent(eXosip_event*) at /home/ziloong/Desktop/iDAS/src/GBSip/TransactionUser/InviteHandle.cpp:41 (discriminator 2)
Stack frame 03-25 19:53:17.720 17063 17063 F DEBUG   :       #02 pc 000609b0  /data/app/com.ictt.www.myapplication-8q6kwRaor0fmisPtqEdPgg==/lib/arm/libiUAC.so (InviteHandle::Run_handleEvent()+192) (BuildId: 57eb7f4d9f61c85e9e9d3477b463cde22d9cef45): Routine InviteHandle::Run_handleEvent() at /home/ziloong/Desktop/iDAS/src/GBSip/TransactionUser/InviteHandle.cpp:158
Stack frame 03-25 19:53:17.720 17063 17063 F DEBUG   :       #03 pc 000607b8  /data/app/com.ictt.www.myapplication-8q6kwRaor0fmisPtqEdPgg==/lib/arm/libiUAC.so (InviteHandle::rootState_processEvent()+232) (BuildId: 57eb7f4d9f61c85e9e9d3477b463cde22d9cef45): Routine InviteHandle::rootState_processEvent() at /home/ziloong/Desktop/iDAS/src/GBSip/TransactionUser/InviteHandle.cpp:113
Stack frame 03-25 19:53:17.720 17063 17063 F DEBUG   :       #04 pc 000cfb6c  /data/app/com.ictt.www.myapplication-8q6kwRaor0fmisPtqEdPgg==/lib/arm/libiUAC.so (OMReactive::processEvent(IOxfEvent*)+232) (BuildId: 57eb7f4d9f61c85e9e9d3477b463cde22d9cef45): Routine OMReactive::processEvent(IOxfEvent*) at /home/ziloong/work/LangCpp/oxf/omreactive.cpp:505
Stack frame 03-25 19:53:17.720 17063 17063 F DEBUG   :       #05 pc 000cf1b8  /data/app/com.ictt.www.myapplication-8q6kwRaor0fmisPtqEdPgg==/lib/arm/libiUAC.so (OMReactive::handleEvent(IOxfEvent*)+200) (BuildId: 57eb7f4d9f61c85e9e9d3477b463cde22d9cef45): Routine OMReactive::handleEvent(IOxfEvent*) at /home/ziloong/work/LangCpp/oxf/omreactive.cpp:238
Stack frame 03-25 19:53:17.720 17063 17063 F DEBUG   :       #06 pc 000d1ab4  /data/app/com.ictt.www.myapplication-8q6kwRaor0fmisPtqEdPgg==/lib/arm/libiUAC.so (OMThread::dispatch(IOxfEvent*)+152) (BuildId: 57eb7f4d9f61c85e9e9d3477b463cde22d9cef45): Routine OMThread::dispatch(IOxfEvent*) at /home/ziloong/work/LangCpp/oxf/omthread.cpp:375
Stack frame 03-25 19:53:17.720 17063 17063 F DEBUG   :       #07 pc 000d1d44  /data/app/com.ictt.www.myapplication-8q6kwRaor0fmisPtqEdPgg==/lib/arm/libiUAC.so (OMThread::execute()+428) (BuildId: 57eb7f4d9f61c85e9e9d3477b463cde22d9cef45): Routine OMThread::execute() at /home/ziloong/work/LangCpp/oxf/omthread.cpp:496
Stack frame 03-25 19:53:17.720 17063 17063 F DEBUG   :       #08 pc 000d1b20  /data/app/com.ictt.www.myapplication-8q6kwRaor0fmisPtqEdPgg==/lib/arm/libiUAC.so (OMThread::doExecute(void*)+44) (BuildId: 57eb7f4d9f61c85e9e9d3477b463cde22d9cef45): Routine OMThread::doExecute(void*) at /home/ziloong/work/LangCpp/oxf/omthread.cpp:390
Stack frame 03-25 19:53:17.720 17063 17063 F DEBUG   :       #09 pc 000cb758  /data/app/com.ictt.www.myapplication-8q6kwRaor0fmisPtqEdPgg==/lib/arm/libiUAC.so (LinuxThread::preExecFunc(void*)+232) (BuildId: 57eb7f4d9f61c85e9e9d3477b463cde22d9cef45): Routine LinuxThread::resume() at /home/ziloong/work/LangCpp/oxf/linuxos.cpp:515
Stack frame 03-25 19:53:17.721 17063 17063 F DEBUG   :       #10 pc 000a109b  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+20) (BuildId: 21ece86427ccb892a7d044a6b4b4babb)
Stack frame 03-25 19:53:17.721 17063 17063 F DEBUG   :       #11 pc 00058113  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) (BuildId: 21ece86427ccb892a7d044a6b4b4babb)
Crash dump is completed

4.基於以上堆棧信息,即可成功定位代碼段錯誤了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章