Native堆栈解析addr2line
命令:
aarch64-linux-android-addr2line.exe –f –C –e libAddress address
举例如下:
F:\tools\GAT_exe_v3.1552.5\GATv3.1552.5\gat-win32-x86_64-3\prebuilt\android-sdk\bin>aarch64-linux-android-addr2line.exe
-f -C -e F:\Share\home\system4\MTK_5.1\CPY803_8_Volte_5.1_Int\mydroid\out\target\product\CPY803_8\symbols\system\lib64\l
ibsurfaceflinger.so
000000000001e98c
android::DisplayDevice::swapBuffers(android::HWComposer&) const /home/system4/MTK_5.1/CPY803_8_Volte_5.1_Int/mydroid/frameworks/native/services/surfaceflinger/DisplayDevice.cpp:285
F:\tools\GAT_exe_v3.1552.5\GATv3.1552.5\gat-win32-x86_64-3\prebuilt\android-sdk\bin>aarch64-linux-android-addr2line.exe
-f -C -e F:\Share\home\system4\MTK_5.1\CPY803_8_Volte_5.1_Int\mydroid\out\target\product\CPY803_8\symbols\system\lib64\l
ibcutils.so
000000000000d5a4
__android_log_assert/home/system4/MTK_5.1/MTK_5.1_Volte_Dev/mydroid/system/core/liblog/logd_write_kern.c:438
Build fingerprint: 'Coolpad/Y803-8/Y803-8:5.1/LMY47D/5.1.033.P2.160602.Y803_8-LC:user/release-keys'
Revision: '0'
ABI: 'arm64'
pid: 10476, tid: 10476, name: surfaceflinger >>> /system/bin/surfaceflinger <<<
signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x3e8000028ec
Abort message: 'eglSwapBuffers(0x1, 0x7f956a0040) failed with 0x00003003'
ALOGE("eglSwapBuffers(%p, %p) failed with 0x%08x", mDisplay, mSurface, error);
backtrace:
#00 pc
000000000000d5a4 /system/lib64/libcutils.so (__android_log_assert+236)
#01 pc
000000000001e98c /system/lib64/libsurfaceflinger.so
#02 pc 0000000000030304 /system/lib64/libsurfaceflinger.so
#03 pc 000000000002eb14 /system/lib64/libsurfaceflinger.so
#04 pc 000000000002d12c /system/lib64/libsurfaceflinger.so
#05 pc 000000000002cde8 /system/lib64/libsurfaceflinger.so
#06 pc 000000000001b600 /system/lib64/libutils.so (_ZN7android6Looper9pollInnerEi+300)
#07 pc 000000000001b91c /system/lib64/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+76)
#08 pc 00000000000291c0 /system/lib64/libsurfaceflinger.so
#09 pc 000000000002c868 /system/lib64/libsurfaceflinger.so (_ZN7android14SurfaceFlinger3runEv+20)
#10 pc 0000000000000f5c /system/bin/surfaceflinger
#11 pc 00000000000196cc /system/lib64/libc.so (__libc_init+96)
#12 pc 0000000000001048 /system/bin/surfaceflinger
分享到:
相关推荐
例如,你可以先用`gdb`获取报错时的堆栈信息,然后用`addr2line`解析这些地址,快速定位问题源。 总的来说,`addr2line`是软件开发中不可或缺的调试利器,尤其在处理复杂系统和库文件时,它能帮助开发者快速理解...
addr2line是GNU Binutils工具链中的一部分,它能够帮助开发者从内存地址反解析出对应的源代码行号和函数名称,这对于定位和解决内存泄漏问题至关重要。本文将详细介绍addr2line在x86平台上的使用,以及如何结合内存...
现在的软件源代码动则千万行,初学者常常感到迷惘,如果能自动生成关键函数的调用关系图,则思路可以清晰许多。如下面这幅图展示了WebKit网页渲染的部分函数执行过程,比单纯地看代码直观多了。...
addr2line通过缓存已解析的信息addr2line优化内存速度。 DWARF信息在可能的情况下会延迟解析。 该库旨在同样进行到相当于现有的工具,如addr2line从binutils的, eu-addr2line从的elfutils,和llvm-symbolize从
tensa-esp32-elf-addr2line
addr2line.exe
免费 免费 感谢 https://github.com/armink/CmBacktrace/blob/master/tools/addr2line/win64/addr2line.exe
【保姆级IDF】ESP32调试利器:xtensa-esp32-elf-addr2line介绍、安装、使用
在Linux下,可以使用addr2line工具,而在macOS下,可以使用atos命令。 五、二次解析 二次解析指的是对原始backtrace进行进一步的分析和处理。例如,我们可能需要过滤掉库函数,只关注应用程序自身的代码;或者我们...
Qualcomm865_3/android-ndk-r21e/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-addr2line -f -C -e workplace/Qualcomm865_3/native-agent/Agent/bin/AC_card_agent ...
首先,`addr2line`的核心功能是解析ELF(Executable and Linkable Format)文件,这是Unix和类Unix系统中广泛使用的可执行和可链接文件格式。当程序运行时,每个内存地址都对应着代码执行的特定点,`addr2line`通过...
总结来说,LeakTracker是检测和追踪内存泄漏的有效工具,通过解析源码和优化"leak-analyze-addr2line"脚本,我们可以更高效地定位内存泄漏问题,提升软件的健壮性和稳定性。深入理解LeakTracker的工作原理和优化技巧...
总结来说,LeakTracker是Android开发中一个强大的内存泄漏检测工具,其解析相对地址的能力和优化的addr2line脚本,为开发者提供了更高效、准确的内存泄漏定位方法。通过深入理解和运用LeakTracker,开发者可以更好地...
4. **解析结果**:addr2line会输出对应内存地址的源代码行号和文件名,这可以帮助你快速定位问题所在。 除此之外,为了更好地防止和处理单片机程序跑飞,开发者还需要关注以下几点: - **异常处理**:确保程序中设...
4. **解析结果**:addr2line会输出对应内存地址的源代码行号和文件名,这可以帮助你快速定位问题所在。 除此之外,为了更好地防止和处理单片机程序跑飞,开发者还需要关注以下几点: - **异常处理**:确保程序中设...
4. **解析结果**:addr2line会输出对应内存地址的源代码行号和文件名,这可以帮助你快速定位问题所在。 除此之外,为了更好地防止和处理单片机程序跑飞,开发者还需要关注以下几点: - **异常处理**:确保程序中设...
在Linux系统中,可以使用`addr2line`工具或者`backtrace_symbols`函数来完成这个任务。 3. **封装成类**:为了方便使用,我们可以将上述操作封装成一个类,提供获取调用堆栈的方法。类的实例化可以触发堆栈回溯,...
为了得到更精确的行号,可以使用`addr2line`工具或动态加载`libbfd`库。 3. **日志记录**:将收集到的错误信息(包括错误消息、堆栈跟踪等)写入日志文件。可以选择标准的日志级别(如DEBUG、INFO、ERROR等),并...
标题中的"**name_addr.rar_ARP解析_arp_arp协议_域名解析**"指出这是一个关于ARP协议和域名解析的资源包。ARP(Address Resolution Protocol)是网络层的一个关键协议,用于将IP地址转换为物理(MAC)地址,而域名...
如果错误发生在静态库或不在动态库中的代码,我们可以直接使用`addr2line`命令,结合可执行文件名和偏移地址,来确定出错的源代码行。例如,如果`addr2line -e 可执行文件名 偏移地址`,它将打印出对应的源代码行。 ...