addr2line

2023-05-16

1、符号表

1.1什么是符号表

符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示:

<起始地址> <结束地址> <函数> [<文件名:行号>]

1.2为什么要配置符号表

为了能快速并准确地定位引擎发生Crash的代码位置

举个例子

1.3如何隐藏符号表

如果不额外配置,使用cmake编译出来的so是带符号表的,使用fvisibility=hidden可以隐藏符号表

引擎是在engine-dev/mk/cmake/CMakeLists.txt文件中配置的

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections -fvisibility=hidden")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections -fvisibility=hidden")

在开启隐藏符号表的情况下,到engine-dev/lib/android/armeabi-v7a目录下看libapp_BaiduMapApplib.so的大小

把engine-dev/mk/cmake/CMakeLists.txt中的隐藏符号表的代码注释掉之后重新编译引擎

 可以看到,增加符号表之后的so明显变大了

1.4 查看符号表

在mac系统中可以使用nm命令查看符号表,例如

nm -A libapp_BaiduMapApplib.so

如果想查看是否包含某个方法,可以用grep命令过滤一下,例如

nm -A libapp_BaiduMapApplib.so| grep OnTimerUpdate

 

可以看到,BaseLayer.cpp文件中包含OnTimerUpdate方法

对于没有符号表的so库使用上边的命令,是没有输出的

2、addr2line

我们经常会遇到地图引擎的crash问题,这个时候就体现出来符号表的作用了,使用addr2line工具,我们可以有效提取出来C/C++层crash的详细信息

首先我们在BaseLayer.cpp中故意插入一段有数组越界的问题代码

VChar chTest[1] = {0};

sprintf(chTest, "house_Ration is %f", house_Ration);

CVLog::Log(CVLog::eLOGError, chTest);

然后在引擎测试工程中运行,触发了crash,关键日志如下

11-29 17:18:22.818 11269 11269 F libc    : FORTIFY: vsprintf: prevented 25-byte write into 1-byte buffer
11-29 17:18:22.818 11269 11269 F libc    : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 11269 (baidumapsdkdemo), pid 11269 (baidumapsdkdemo)
11-29 17:18:22.848 11320 11320 I crash_dump32: obtaining output fd from tombstoned, type: kDebuggerdTombstone
11-29 17:18:22.851  1105  1105 I /system/bin/tombstoned: received crash request for pid 11269
11-29 17:18:22.853 11320 11320 I crash_dump32: performing dump of process 11269 (target tid = 11269)
11-29 17:18:22.863 11320 11320 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-29 17:18:22.863 11320 11320 F DEBUG   : Build fingerprint: 'HUAWEI/LIO-AL00/HWLIO:10/HUAWEILIO-AL00/102.0.0.211C00:user/release-keys'
11-29 17:18:22.863 11320 11320 F DEBUG   : Revision: '0'
11-29 17:18:22.863 11320 11320 F DEBUG   : ABI: 'arm'
11-29 17:18:22.865 11320 11320 F DEBUG   : SYSVMTYPE: Maple
11-29 17:18:22.865 11320 11320 F DEBUG   : APPVMTYPE: Art
11-29 17:18:22.865 11320 11320 F DEBUG   : Timestamp: 2021-11-29 17:18:22+0800
11-29 17:18:22.865 11320 11320 F DEBUG   : pid: 11269, tid: 11269, name: baidumapsdkdemo  >>> com.baidu.map.baidumapsdkdemo <<<
11-29 17:18:22.865 11320 11320 F DEBUG   : uid: 10271
11-29 17:18:22.865 11320 11320 F DEBUG   : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
11-29 17:18:22.865 11320 11320 F DEBUG   : Abort message: 'FORTIFY: vsprintf: prevented 25-byte write into 1-byte buffer'
11-29 17:18:22.865 11320 11320 F DEBUG   :     r0  00000000  r1  00002c05  r2  00000006  r3  ff8cc958
11-29 17:18:22.865 11320 11320 F DEBUG   :     r4  ff8cc96c  r5  ff8cc950  r6  00002c05  r7  0000016b
11-29 17:18:22.865 11320 11320 F DEBUG   :     r8  ff8cc968  r9  ff8cc958  r10 ff8cc988  r11 ff8cc978
11-29 17:18:22.865 11320 11320 F DEBUG   :     ip  00002c05  sp  ff8cc928  lr  e659858f  pc  e65985a2
11-29 17:18:22.872  4397  4917 I ScenarioService: refresh visibleApp:[com.baidu.map.baidumapsdkdemo]
11-29 17:18:22.872  4397  4917 I PGServer: report state:14 event type:1 pid:-1 uid:-1 pkg:com.baidu.map.baidumapsdkdemo to pid: 4397
11-29 17:18:22.872  4397  4917 I ApsAppsTypeHandler: APS: APK: ApsAppsTypeHandler.getInstance, sInstance = com.huawei.android.hwaps.o@15bbd88
11-29 17:18:22.872  4397  4917 I PF_API_JNI: ACCKIT_APS_NotifyInfo 3: com.baidu.map.baidumapsdkdemo
11-29 17:18:22.873   790   844 D ACCKIT_ : pack:"com.baidu.map.baidumapsdkdemo"
11-29 17:18:22.873  4397  5318 I AppJobCtrl: Visible App: com.baidu.map.baidumapsdkdemo
11-29 17:18:22.873  2047  4619 I PGManagerService: proxyJob, sub type:1, list: [com.baidu.map.baidumapsdkdemo]
11-29 17:18:22.873  4397  5318 I AppJobCtrl: UnP_job OK !
11-29 17:18:22.873  4397  5318 I AppJobCtrl: Invisible App: com.huawei.android.launcher
11-29 17:18:22.873  4397  5318 I PG_ash  : com.huawei.android.launcher become invisible
11-29 17:18:23.005   700  4197 I netd    : trafficSwapActiveStatsMap() <0.16ms>
11-29 17:18:23.006   700  4197 I netd    : trafficSwapActiveStatsMap() <0.19ms>
11-29 17:18:23.091 11320 11320 F DEBUG   : 
11-29 17:18:23.091 11320 11320 F DEBUG   : backtrace:
11-29 17:18:23.091 11320 11320 F DEBUG   :       #00 pc 000545a2  /apex/com.android.runtime/lib/bionic/libc.so (abort+166) (BuildId: b3a547af3eb880c5dfd66f61a8c8b4ca)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #01 pc 00070133  /apex/com.android.runtime/lib/bionic/libc.so (__fortify_fatal(char const*, ...)+26) (BuildId: b3a547af3eb880c5dfd66f61a8c8b4ca)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #02 pc 00070a4b  /apex/com.android.runtime/lib/bionic/libc.so (__vsprintf_chk+50) (BuildId: b3a547af3eb880c5dfd66f61a8c8b4ca)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #03 pc 0017d81f  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #04 pc 0017d657  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (_baidu_framework::CBaseLayer::CBaseLayer()+386) (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #05 pc 00204165  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #06 pc 00203eb9  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #07 pc 0020863d  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #08 pc 002085fd  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #09 pc 002085a1  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #10 pc 00021ce7  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapBaselib.so (_baidu_framework::CVComServer::ComCreateInstance(_baidu_vi::CVString const&, _baidu_vi::CVString const&, void**)+78) (BuildId: 3c0d9445cc94ce898b8fd5e1b634d8efa4b6304f)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #11 pc 00195a57  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #12 pc 0019681d  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #13 pc 001947d3  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (_baidu_framework::IVMapbaseFactory::CreateInstance(_baidu_vi::CVString const&, void**)+58) (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #14 pc 00021ce7  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapBaselib.so (_baidu_framework::CVComServer::ComCreateInstance(_baidu_vi::CVString const&, _baidu_vi::CVString const&, void**)+78) (BuildId: 3c0d9445cc94ce898b8fd5e1b634d8efa4b6304f)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #15 pc 000e3937  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #16 pc 00012d7b  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/oat/arm/base.odex (art_jni_trampoline+74)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #17 pc 000e3bc5  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #18 pc 004558bb  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub+250) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #19 pc 000ebffd  /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+160) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #20 pc 0022499f  /apex/com.android.runtime/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+274) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #21 pc 00220b07  /apex/com.android.runtime/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+802) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #22 pc 0044c96f  /apex/com.android.runtime/lib/libart.so (MterpInvokeDirect+358) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #23 pc 000de914  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_direct+20) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #24 pc 001734ec  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/oat/arm/base.vdex (com.baidu.platform.comjni.map.basemap.NABaseMap.create)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #25 pc 0045038b  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtualQuick+1170) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #26 pc 000e2594  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual_quick+20) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #27 pc 00170436  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/oat/arm/base.vdex (com.baidu.platform.comjni.map.basemap.AppBaseMap.Create+22)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #28 pc 0045038b  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtualQuick+1170) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #29 pc 000e2594  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual_quick+20) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #30 pc 0015efe6  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/oat/arm/base.vdex (com.baidu.platform.comapi.map.MapController.initBaseMap+14)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #31 pc 0045038b  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtualQuick+1170) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #32 pc 000e2594  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual_quick+20) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #33 pc 0017964a  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/oat/arm/base.vdex (mapview.MapViewFactory.initMainMapController+30)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #34 pc 0044cbeb  /apex/com.android.runtime/lib/libart.so (MterpInvokeDirect+994) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #35 pc 000de914  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_direct+20) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #36 pc 00179908  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/oat/arm/base.vdex (mapview.MapViewFactory.startDataEngineThread+24)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #37 pc 0045038b  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtualQuick+1170) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #38 pc 000e2594  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual_quick+20) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #39 pc 0014688c  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/oat/arm/base.vdex (com.baidu.map.baidumapsdkdemo.DemoApplication.InitEngine+76)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #40 pc 0044cbeb  /apex/com.android.runtime/lib/libart.so (MterpInvokeDirect+994) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #41 pc 000de914  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_direct+20) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #42 pc 0014691c  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/oat/arm/base.vdex (com.baidu.map.baidumapsdkdemo.DemoApplication.onCreate+88)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #43 pc 00200bb3  /apex/com.android.runtime/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEbb.llvm.14250088896784669869+266) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #44 pc 00205465  /apex/com.android.runtime/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+120) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #45 pc 0043ed29  /apex/com.android.runtime/lib/libart.so (artQuickToInterpreterBridge+832) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #46 pc 000e85a1  /apex/com.android.runtime/lib/libart.so (art_quick_to_interpreter_bridge+32) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #47 pc 003f2781  /system/framework/arm/boot-framework.oat (android.app.Instrumentation.callApplicationOnCreate+112) (BuildId: 4ba2dd1826d84b568a7669bbfbf1b93219b32178)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #48 pc 004edf87  /system/framework/arm/boot-framework.oat (android.app.ActivityThread.handleBindApplication+7222) (BuildId: 4ba2dd1826d84b568a7669bbfbf1b93219b32178)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #49 pc 000e3bc5  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #50 pc 004558bb  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub+250) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #51 pc 000ebffd  /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+160) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #52 pc 0022499f  /apex/com.android.runtime/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+274) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #53 pc 00220b07  /apex/com.android.runtime/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+802) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #54 pc 0044c96f  /apex/com.android.runtime/lib/libart.so (MterpInvokeDirect+358) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #55 pc 000de914  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_direct+20) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #56 pc 001a3e40  /system/framework/framework.jar (android.app.ActivityThread.access$2600)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #57 pc 00200bb3  /apex/com.android.runtime/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEbb.llvm.14250088896784669869+266) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #58 pc 00205465  /apex/com.android.runtime/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+120) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #59 pc 0043ed29  /apex/com.android.runtime/lib/libart.so (artQuickToInterpreterBridge+832) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #60 pc 000e85a1  /apex/com.android.runtime/lib/libart.so (art_quick_to_interpreter_bridge+32) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #61 pc 004e5349  /system/framework/arm/boot-framework.oat (android.app.ActivityThread$H.handleMessage+8200) (BuildId: 4ba2dd1826d84b568a7669bbfbf1b93219b32178)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #62 pc 007544a1  /system/framework/arm/boot-framework.oat (android.os.Handler.dispatchMessage+136) (BuildId: 4ba2dd1826d84b568a7669bbfbf1b93219b32178)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #63 pc 00756f2b  /system/framework/arm/boot-framework.oat (android.os.Looper.loop+1330) (BuildId: 4ba2dd1826d84b568a7669bbfbf1b93219b32178)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #64 pc 004f64db  /system/framework/arm/boot-framework.oat (android.app.ActivityThread.main+3946) (BuildId: 4ba2dd1826d84b568a7669bbfbf1b93219b32178)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #65 pc 000e3bc5  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #66 pc 004559cf  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_static_stub+246) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #67 pc 000ec011  /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+180) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #68 pc 003932bb  /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+54) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #69 pc 0039459f  /apex/com.android.runtime/lib/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned int)+798) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #70 pc 0033c443  /apex/com.android.runtime/lib/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+30) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #71 pc 000f17ef  /system/framework/arm/boot.oat (art_jni_trampoline+110) (BuildId: e2fa8fb24009221e62edcf5e533ab3d301ea8c31)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #72 pc 0095463b  /system/framework/arm/boot-framework.oat (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+114) (BuildId: 4ba2dd1826d84b568a7669bbfbf1b93219b32178)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #73 pc 0095b62b  /system/framework/arm/boot-framework.oat (com.android.internal.os.ZygoteInit.main+3010) (BuildId: 4ba2dd1826d84b568a7669bbfbf1b93219b32178)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #74 pc 000e3bc5  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #75 pc 004559cf  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_static_stub+246) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #76 pc 000ec011  /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+180) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #77 pc 003932bb  /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+54) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #78 pc 003930ed  /apex/com.android.runtime/lib/libart.so (art::InvokeWithVarArgs(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+288) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.092 11320 11320 F DEBUG   :       #79 pc 002d1f35  /apex/com.android.runtime/lib/libart.so (art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+464) (BuildId: 303d8241140d7a36bab763b064741026)
11-29 17:18:23.092 11320 11320 F DEBUG   :       #80 pc 000ae391  /system/lib/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+28) (BuildId: 2080afde594cceebfa19bb9e84b74c9e)
11-29 17:18:23.092 11320 11320 F DEBUG   :       #81 pc 000b1091  /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+760) (BuildId: 2080afde594cceebfa19bb9e84b74c9e)
11-29 17:18:23.092 11320 11320 F DEBUG   :       #82 pc 000022f5  /system/bin/app_process32 (main+688) (BuildId: 3828d29d4d168f5ce591a33e42fd0f43)
11-29 17:18:23.092 11320 11320 F DEBUG   :       #83 pc 0004e09b  /apex/com.android.runtime/lib/bionic/libc.so (__libc_init+66) (BuildId: b3a547af3eb880c5dfd66f61a8c8b4ca)
11-29 17:18:23.092 11320 11320 F DEBUG   :       #84 pc 0000202f  /system/bin/app_process32 (_start_main+38) (BuildId: 3828d29d4d168f5ce591a33e42fd0f43)
11-29 17:18:23.092 11320 11320 F DEBUG   :       #85 pc 00004456  <anonymous:e9a22000>
11-29 17:18:23.169  2047  4619 D RemoteAnimationController: app-onAnimationFinished(): mOuter=com.android.server.wm.RemoteAnimationController@813ea5
11-29 17:18:23.169  2047  4619 D RemoteAnimationController: onAnimationFinished(): Notify animation finished:
11-29 17:18:23.169  2047  4619 I WindowManager: send SET_LAUNCHER_VISIBLE_IN_FINGER_BOOST visible: true,delay:0, handle:true, userId:0, callingPid: 2047
11-29 17:18:23.169  2047  2660 I WindowManager: handle SET_LAUNCHER_VISIBLE_IN_FINGER_BOOST visible:true handle:trueuserId:0, currentUserId:0
11-29 17:18:23.169  2047  4619 I WindowManager: onAnimationFinished task=27

1、确认crash基本信息

Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 11269 (baidumapsdkdemo), pid 11269 (baidumapsdkdemo)

可以看到,是引擎的测试工程发生了crash,导致Crash的是signal 6,关键错误信息是 SI_QUEUE

2、查看backtrace

11-29 17:18:23.091 11320 11320 F DEBUG   : backtrace:
11-29 17:18:23.091 11320 11320 F DEBUG   :       #00 pc 000545a2  /apex/com.android.runtime/lib/bionic/libc.so (abort+166) (BuildId: b3a547af3eb880c5dfd66f61a8c8b4ca)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #01 pc 00070133  /apex/com.android.runtime/lib/bionic/libc.so (__fortify_fatal(char const*, ...)+26) (BuildId: b3a547af3eb880c5dfd66f61a8c8b4ca)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #02 pc 00070a4b  /apex/com.android.runtime/lib/bionic/libc.so (__vsprintf_chk+50) (BuildId: b3a547af3eb880c5dfd66f61a8c8b4ca)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #03 pc 0017d81f  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #04 pc 0017d657  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (_baidu_framework::CBaseLayer::CBaseLayer()+386) (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #05 pc 00204165  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #06 pc 00203eb9  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #07 pc 0020863d  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #08 pc 002085fd  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #09 pc 002085a1  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #10 pc 00021ce7  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapBaselib.so (_baidu_framework::CVComServer::ComCreateInstance(_baidu_vi::CVString const&, _baidu_vi::CVString const&, void**)+78) (BuildId: 3c0d9445cc94ce898b8fd5e1b634d8efa4b6304f)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #11 pc 00195a57  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #12 pc 0019681d  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #13 pc 001947d3  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (_baidu_framework::IVMapbaseFactory::CreateInstance(_baidu_vi::CVString const&, void**)+58) (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #14 pc 00021ce7  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapBaselib.so (_baidu_framework::CVComServer::ComCreateInstance(_baidu_vi::CVString const&, _baidu_vi::CVString const&, void**)+78) (BuildId: 3c0d9445cc94ce898b8fd5e1b634d8efa4b6304f)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #15 pc 000e3937  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/lib/arm/libapp_BaiduMapApplib.so (BuildId: 576b8228f6f73078a77d6fb21add545985e9ec6b)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #16 pc 00012d7b  /data/app/com.baidu.map.baidumapsdkdemo-Im_Mx9Z3_32ZQrVKJkvYFA==/oat/arm/base.odex (art_jni_trampoline+74)
11-29 17:18:23.091 11320 11320 F DEBUG   :       #17 pc 000e3bc5  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68) (BuildId: 303d8241140d7a36bab763b064741026)

使用addr2line工具,将日志中的地址定位到具体的代码行

addr工具在NDK/toolchains目录下,记得arm64-v8a用上边的,32位用下边的

addr2line -e ****.so 堆栈信息

这个时候就体现出来符号表的作用了,我们使用不带符号表的release so去反解

 因为没有符号表,所以解不出来,接下来用debug的so试一试

 直接定位倒问题行号

 确实是问题发生的地方

所以在发版的时候,保存一份对应的debug so是很重要的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

addr2line 的相关文章

  • c++矩阵计算性能对比:Eigen和GPU

    生成随机矩阵 生成随机矩阵有多种方式 xff0c 直接了当的方式是使用显式循环的方式为矩阵的每个元素赋随机值 span class token macro property span class token directive hash s
  • c语言中 char* 和 unsigned char* 的区别浅析

    背景 最近在项目中遇到了一个编译警告 xff0c 是因为定义的变量为char xff0c 而在使用时作为函数的unsigned char 类型的参数调用 这个警告很容易避免 xff0c 但是char 和unsigned char 到底有什么
  • c语言中static关键字用法详解

    概述 static关键字在c语言中比较常用 xff0c 使用恰当能够大大提高程序的模块化特性 xff0c 有利于扩展和维护 但是对于c语言初学者 xff0c static由于使用灵活 xff0c 并不容易掌握 本文就static在c语言中的
  • linux下把进程/线程绑定到特定cpu核上运行

    概述 现在大家使用的基本上都是多核cpu xff0c 一般是4核的 平时应用程序在运行时都是由操作系统管理的 操作系统对应用进程进行调度 xff0c 使其在不同的核上轮番运行 对于普通的应用 xff0c 操作系统的默认调度机制是没有问题的
  • git中submodule子模块的添加、使用和删除

    背景 项目中经常使用别人维护的模块 xff0c 在git中使用子模块的功能能够大大提高开发效率 使用子模块后 xff0c 不必负责子模块的维护 xff0c 只需要在必要的时候同步更新子模块即可 本文主要讲解子模块相关的基础命令 xff0c
  • ros下package中CMakelists的编写

    目录 一 package自动生成的Cmakelists1 指定cmake版本2 项目名字3 寻找构建所需依赖包4 启用python模块依赖5 Message Service Action 生成文件6 启动 message services
  • STM32跳至硬件错误中断(HardFault_Handle) 原因及参考解决方法

    一 HardFault Handle引起的原因 1 遇到错误问题是数据类型不对 xff0c 导致该步骤永远不能执行到 xff0c 跳至硬件错误中断 xff1b 所以硬件中断可尝试查找数据类型错误 2 堆栈设置错误也会跳至hardwarefa
  • 时间与日期插件 -- laydate 使用方法(摘自官网)

    简单例子 xff1a function var start 61 elem 39 start 39 选择ID为START的input format 39 YYYY MM DD hh mm ss 39 自动生成的时间格式 min laydat
  • nginx部署vue项目(包括一个nginx部署多个vue项目)

    部署准备 vue项目打包 首先打开public下的index目录 xff0c 修改后台的URL地址 xff0c 如下图所示 xff1a 使用CMD xff0c 打开命令行程序 进入项目根目录 执行命令 xff1a npm run build
  • 雅可比(Jacobian)矩阵

    在向量分析中 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵 其行列式称为雅可比行列式 还有 在代数几何中 代数曲线的雅可比量表示雅可比簇 xff1a 伴随该曲线的一个代数群 曲线可以嵌入其中 它们全部都以数学家卡尔 雅可比 Carl Jac
  • 粒子滤波方法入门

    例子滤波方法入门 xff1a 分析典型非线性系统数学模型 主要内容 xff1a 1 非线性数学模型 2 用粒子滤波的MATLAB程序简介 1 非线性数学模型 2 用粒子滤波的MATLAB程序简介 function output args 6
  • 关于VIO中IMU预积分的讲解

    Why VIO 转自 xff1a https zhehangt github io 2019 03 23 SLAM Basic VIOInit 首先我们先简单回顾一下为什么要做VIO xff0c 以及为什么要做VIO初始化 我们知道单目相机
  • 线程互斥量死锁,与sleep没有关联

    文章目录 死锁问题死锁原因产生死锁的几个常见场景死锁产生的四个必要条件 61 61 仅供参考互斥条件占有和等待条件不可抢占条件环路等待条件 pthread mutex lock 线程互斥量死锁 与sleep没有关联 项目上 定位死锁原因 无
  • linux下,应用程序中的全局变量与so库中的全局变量名冲突,怎么办?

    文章目录 Wl Bsymbolic 动态库与应用 如果存在同名全局变量 会如何 实现了一个动态库 xff0c 封装了一些方法 然后基于这个动态库 xff0c 实现了一个应用程序 应用程序中含有全局变量A xff0c 动态库中也含有全局变量A

随机推荐

  • 内存管理:分页,分段,段页结合

    内存管理 xff1a 分页 xff0c 分段 xff0c 段页结合
  • STM32 SPI 收发数据 ---规则 + 问题解析

    规则 xff1a 1 xff09 高速同步串行口 3 xff5e 4线接口 xff08 CS xff0c CLK xff0c MOSI xff0c MISO xff09 xff0c 收发独立 可同步进行 2 xff09 SPI分为主从模式
  • gazebo: ROS Control的仿真教程

    gazebo 43 ROS control 1 预备知识2 数据流3 实现动态避障的环境构建 本文主要介绍如何为仿真机器人做控制器的仿真 通过仿真控制器 xff0c 控制机器人的对应关节 1 预备知识 关于gazebo中机器人的仿真 xff
  • NuttX实时操作系统

    NuttX 是一个实时操作系统 RTOS xff0c 其重点遵从特定的标准并且尽量小型化 可伸缩良好且可适应从8位到32位单片机环境 xff0c Nuttx主要遵循的标准是 Posix和ANSI标准 其他的一些来自于Unix或者其他常规的实
  • STM32 CAN 配置、收发结构定义 留存...

    分布式系统项目需要 xff0c 这次弄个CAN总线来布局 xff0c 仅见CAN的冰山一角 本次使用扩展帧模式 STM32 对CAN的定义 库 CAN结构体定义 说明 xff1a 寄存器映射 xff1a typedef span class
  • cortex-M3 的SVC、PendSV异常,与操作系统(ucos实时系统)

    文章目录 SVC和PendSVSVC xff1a PendSV xff1a 操作系统 xff0c 上下文切换 实例 xff1a ucos 关于 PendSV 异常的应用 上下文切换时机 怎样满足实时性 xff1a 中断 异常处理通用模板 x
  • STM32+IAP方案 实现网络升级应用固件

    关注了这个概念有些日子了 xff0c 这段时间总算有机会实战 61 61 网络升级应用固件 xff0c 这里记录下遇到的问题 xff0c 及解决方案 原理与网上流传的串口作为传输手段 一致 xff1b 不同之处 xff0c 无非我这里使用了
  • IAR版本不兼容导致无法正常打开工程文件--解决方法

    嵌入式开发 学习过程中 xff0c 难免需要借鉴别人的工程 xff0c 但是开发环境的匹配始终是个问题 61 61 版本不匹配 无法正常的打开工程文件 一般官方标配的开发环境包括 xff1a MDKIAR 这里描述IAR环境下 xff0c
  • STM32中GPIO的8种工作模式

    概念解释 xff1a 复用功能 xff1a 即片内外设 xff0c 包括UART SPI CAN I2C等等 xff0c 开启这些外设的功能 xff0c 就是使用了系统的复用功能 复用功能有两种 xff1a 没有重映像 重映像 xff08
  • 再读 ucosII源码(邵贝贝):任务之间的通讯与同步--邮箱

    邮箱简介 xff1a 邮箱是 C OS II中另一种通讯机制 xff0c 它可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量 该指针指向一个包含了特定 消息 的数据结构 为了在 C OS II中使用邮箱 xff0c 必须将O
  • 阿里云ubuntu 16.04安装图形界面

    1 VNC的安装与配置 安装之前先输入 span class pln apt span span class pun span span class kwd span class hljs keyword get span span spa
  • cmake/makefile 获取git版本信息并传入源码输出

    CMake获取git commitId CMakeLists txt cmake minimum required VERSION 2 8 project test set SRCS main cpp 执行git命令 xff0c 并把结果重
  • 为什么使用static的类方法不需要new

    文章目录 JAVA加载过程static静态成员从static学习java编译过程JVM加载顺序摘要 xff1a 稍稍延申一下 xff1a 对于此java给出了两个解决方案 xff1a 总结static下面说说静态的特点 xff1a 实例变量
  • CMake引入三方库

    做移动端的NDK开发经常需要引入三方库 xff0c 本文以常见的JSON库为例进行说明 jsoncpp源码下载地址https github com open source parsers jsoncpp 下载1 9 5的tag 1 纯源码依
  • C++中泛型算法详解5:面向泛型算法的迭代器类别

    前言 任何算法最基本的特性是要求迭代器提供那些操作 根据算法要求的迭代器操作 xff0c 可以分为如下迭代器类别 xff1a 1 input iterator 2 output iterator 3 forward iterator 4 b
  • CMake&CMakeList.txt

    1 各种关系 在各种开源项目中 xff0c 经常会发现项目中除了代码源文件 xff0c 还包含了 CMakeList txt Makefile 文件 xff0c 在项目的编译时候需要用到的命令有 cmake make 我们本次想搞清楚他们之
  • 使用Docker制作镜像并推送到镜像仓库

    本文会告诉你如何使用docker从远端下载一个镜像 xff0c 然后对镜像做修改 xff0c 最后再把镜像推送到你自己的镜像仓库 1 安装Docker 这个没啥说的 xff0c 根据你自己的环境下载对应的安装包安装就是了 docker官网下
  • Mac上几款免费的MySql客户端

    由于开发需要在Mac上连接MySql数据库 xff0c 虽然命令行也能用 xff0c 但是我还是喜欢用带UI的客户端去连 就用过的mysql客户端来说 xff0c 最好用的是Navicate xff0c 不过后来收费了 xff0c 还收的贼
  • Mac M1芯片安装 Numpy Pandas

    本文教你如何简单的在M1芯片的MacBook上安装Numpy和Pandas 刚入手了一个Mac Pro xff0c 是M1芯片的 xff0c 结果在安装Numpy和Pandas时遇到了各种莫名奇妙的问题 第1种报错 xff0c 很长 xff
  • addr2line

    1 符号表 1 1什么是符号表 符号表是内存地址与函数名 文件名 行号的映射表 符号表元素如下所示 xff1a lt 起始地址 gt lt 结束地址 gt lt 函数 gt lt 文件名 行号 gt 1 2为什么要配置符号表 为了能快速并准