[addr2line]分析crash问题

Linux系统之addr2line命令详解 addr2line 是一个 GNU 工具,用于将程序地址转换为文件名和行号信息。它通常用于调试目的,特别是有程序崩溃生成的核心转储(core dump)或性能分析工具输出的地址时,addr2line 可以帮助确定这些地址对应的源代码位置。这对于定位和修复错误非常有用。 阅读详情

addr2line分析crash问题

addr2line功能

addr2line可以通过解析地址来定位异常发生在哪个文件,哪个函数,哪一行;不过只对编译时带-g参数的进程或者库文件有效,因此想使用addr2line定义进程发生crash时的位置,需要在编译时带上-g参数编译。

addr2line使用

常用参数
在这里插入图片描述

addr2line -e *.elf -af 0x12345678

流程

1.堆栈日志打印,在hilogs里搜索关键字“backtrace”
2.提取对应进程,一般“libc.so”为系统库,可不关注,继续向下查看如wpa_supplicnat,找到对应进程
//有些进程添加了编译信息(库的大小会大一些),如android“/symbols/”
3.提取错误地址,重点看 “pc” 后面的十六进制数
使用addr2line -e “16进制地址值” “进程名称” 解析错误

Unity打包符号表 使用ndk addr2line.exe+符号表 将崩溃内存地址解析成函数名 阅读详情

相关推荐

Android使用addr2line分析Native Crash

从foo()转换为_Z3foov的过程被称为mangle,_Z3foov转换为foo()的过程被称为demangle。这里展开说说-C这个参数,我们知道C/C++语言在编译以后,函数的名字会被编译器修改为编译器内部识别的名字,该名字在链接的时候被用到。常用的地址转换工具有addr2line、ndk-stack等,个人比较喜欢addr2line,所以接下来介绍下该工具的基本使用方式。我们主要关注backtrace后面的信息,同时带"pc"和"/data"的行基本就是app相关的崩溃行了。

薛文旺 2034

addr2line

一、addr2line 用addr2line可以将函数地址解析为函数名,在Linux下用C/C++的程序,可以使用addr2line根据地址获取到对应的代码行。 这是一个示例程序,func函数返回参数a除以参数b的结果。这里使用0作为除数,结果就是程序因为除以0导致错误,直接中断了。 #include <stdio.h> int func(int a, int b) { return a / b; } int main() { int x = 10; int y =

u013827488的博客 1万+

Android NDK Crash信息收集捕获和日志异常定位分析(addr2line)

Android NDK 闪退日志收集与分析我们在开发过程中,Android JNI层Crash问题或者我们引用的第三方.so库文件报错,都是一个比较头疼的问题。相对Java层来说,由于c/c++造成的crash没有输出如同Java的Exception Strace堆栈信息,所以定位问题也是个比较艰难的事情。Google Breakpad是一套完整的工具集,从Crash的捕获到Crash的dump,都提供了相对应的工具。

yundashi168.com 1138

Linux调试工具 | Addr2line

通过addr2line的描述可知,在使用addr2line将地址转换为函数、文件名或行号时,其有两种使用方法:即对于可执行文件,addr2line后直接跟十六进制的地址值;对于可重定位对象文件,addr2line后直接跟十六进制的地址偏移量。从而实现正确输出需要的信息,否则会导致地址无法解析,输出??:0。提示:可通过file命令区分可执行文件与可重定位对象#输出executable,可知文件是可执行文件#输出relocatable,可知文件是可重定位对象。

qq_43416206的博客 9993

addr2line跟踪core

1,动态库如何指定链接路径,不适用/usr/bin,使用 -L . -lfun -Wl,-rpath=.偏移地址= 0xb76f0437 - 0xb76f0000 = 0x437。3,addr2line怎么找动态库的偏移地址,0x437怎么来的。a,挂死地址:0xb76f0437(是物理地址还是虚拟地址)先找到libfun.so的起始地址:0xb76f0000。2,addrline 没看到打印,输出?当把fun.c编译成动态库时呢。第一步,运行所有.c。

陌上花开缓缓归以的博客 394

Android so库开发——addr2line查看so异常信息(四)

在NDK开发中经常会出现应用Crash的情况,而JNI层的报错信息,不像Java层报错信息那样可以直接在日志中看到错误的行数,JNI层中出现的错误直接看根本定位不到错误的位置。通常来说,JNI报的基本都是堆栈信息,需要NDK的一些工具进行地址转换,转换后即可看到错误的位置。addr2line就是这些地址转换的工具。

小旭的专栏 3688

Android15 GKI版本分析Kernel Crash问题

环境介绍。

hongyeying的专栏 1538

linux内核panic/oops/crash分析(addr2line,objdump,gdb)

panic、oops、crash都是指linux kernel层发生了内核无法处理的异常。 应用层编程只会造成该进程的崩溃,内核层的编程如驱动代码中的异常最严重的情况会导致内核panic。 那怎样处理呢? 内核panic后有dump机制会打印出目前的所有寄存器,以便于分析异常原因。 我们经常用到的工具为addr2line,objdump,gdb addr2line可以将出错代码地址转转换

Radia的专栏 8576

addr2line + objdump 定位crash问题

addr2line + objdump 定位crash问题

weixin_42136255的博客 2461

2026年(新服务器默认密码)最新各大厂商默认凭证大全

本文整理了国内外主流服务器厂商的默认管理接口凭证信息,包括Dell、HPE、浪潮、华为等品牌的管理接口类型、默认用户名/密码和IP地址。特别强调国产服务器在信创环境下的安全风险,指出国内厂商部分型号仍保留固定默认密码(如浪潮admin/admin),而国际厂商多采用随机密码标签。文章提供了新机初始化安全流程建议:查找机箱标签、立即修改默认密码、配置网络隔离、更新固件等。最后提醒运维人员,服务器安全应从首次上电开始重视,管理接口暴露是重大风险点,必须严格执行安全规范。

你好,旧时光! 1706

MiniMaxH3+ComfyUI本地部署:一键整合包、工作流搭建与报错排查

本地部署视频生成模型时,模型权重、推理框架与自定义节点的匹配是核心挑战。MiniMaxH3作为多模态生成模型,通常依赖ComfyUI这类节点式工作流引擎实现可视化调度。一键整合包将Python环境、PyTorch算子、模型文件预置封装,大幅降低部署门槛,并通过半精度加载、显存碎片回收等机制优化推理速度。在文生视频、图生视频与批量生成场景中,清晰的节点链路和参数调优能力直接影响输出质量与显存占用。针对模型不识别、节点执行失败等高频问题,系统排查命令行日志与模型目录可快速定位故障。本文以MiniMaxH3整合包

weixin_29047545的博客 582

Android Crash分析和解决方法总结

Android Crash分析和解决方法总结

汽车以太网和SOA 7607

如何设计ADAS系统功能状态机(一)

状态机模块在自动驾驶系统中扮演着关键的角色,它负责管理和控制各个功能的状态转换和行为执行。今天我们来聊聊如何设计自动驾驶系统的状态机。

supass2018的博客 1615

Android crash 日志 分析

      在Android开发的过程中,有时候需要创建一个纯linux的应用程序,当这些程序crash时,如果找不到导致crash的直接原因,问题将很难被修复。本文将介绍一种分析crash问题的方法。    1)以下是crash时串口的打印信息:[cpp] view plain copypid: 96, tid: 798, name: Playback  &gt;&gt;&gt; /system...

蓝精灵的专栏 1875

手把手教你用CEFSharp打造防关联指纹浏览器(附完整代码)

本文详细介绍了如何基于CEFSharp框架,从零开始构建一个企业级的防关联指纹浏览器。通过剖析核心架构、多进程隔离实现、动态指纹混淆(如Canvas、WebGL)的实战代码,以及代理集成与性能优化,为跨境电商、广告投放等场景提供了一套可控、安全的开源解决方案。

fern8的博客 961

Ubuntu20.04配置PX4环境启动或编译jmavsim 出现的错误及解决办法

错误1:ant命令未找到

Iamsonice的博客 8856

Android Native报错定位(addr2line工具的使用)

文章目录Android Native报错定位源码部分:日志分析线索一线索二addr2line使用位置使用实战addr2line出现“??:?”小结android studio编译的库其它总结 Android Native报错定位 今天调试Android stagefright模块,修改MediaCodec.cpp文件时,一不小心在代码里写了个空指针进去。 于是得到了下面这个报错日志: ------...

SuperLi 1万+

tiktok算法协议研究

经过上述分析,可以确定目标字符串来源于一段 JSON 数据,而这段 JSON 数据来自于一个经过加密的本地文件。对字符串 "sdi_v2" 进行 SHA-1 计算,得到 20 字节的结果;将第一步得到的数据进行MD5计算,生成16字节的结果;将第二步的结果转换为十六进制字符串,从而得到 32 字节的密钥。写这种算法分析的帖子真的是太无聊了,就先分析到这里吧,后续有机会再来谈下被加密的本地文件是怎么来的!!自我感觉TT的算法并不难,就是量太大了,所以我想问问有没有感兴趣的朋友来一起分析,欢迎联系。

2503_90751938的博客 2577

使用objdump进行Android crash 日志 分析

在Android开发的过程中,有时候需要创建一个纯linux的应用程序,当这些程序crash时,如果找不到导致crash的直接原因,问题将很难被修复。本文将介绍一种分析crash问题的方法。     1)以下是crash时串口的打印信息: [cpp] view plain copy print? pid: 96, tid: 798, name: Playba

明潮的BLOG 2239

IMEI引起的无法驻网问题

问题不复杂,场景很简单,如上图,UE在进行LTE attach过程时,在送完NAS security mode complete后,就立刻收到了网络attach reject 带cause 6 Illegal ME,根据协议描述这个cause 代表ME不被网络可接受,例如ME在禁止名单或者黑名单中就会有这种cause。然而前方在报这个问题的时候,也是知道SIM卡和手机IMEI在运营商那边没能成功绑定,然后才报的问题,要查看手机是不是有问题...... 告诉前方原因后,还认为是手机问题,告知要继续查。

asd199086的博客 1426

极智AI | 详解 ViT 算法实现

大家好,我是极智视界,本文详细介绍一下 ViT 算法的设计与实现,包括代码。

极智视界 5604

android 模拟crash_Android crash问题分析定位方法

Android APP在运行过程中如出现crash异常,会产生tombstone文件,存放在/data/tombstones目录下。思路之一:我们可以通过分析tombstone来定位问题原因。crash异常日志如下:11-06 09:26:19.495 F/libc ( 993): Fatal signal 6 (SIGABRT), code -6 in tid 1046 (RenderT...

weixin_39744240的博客 1505

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

安卓 JNI crash 日志分析 及问题定位 方法

目录标题例子抓取crash 日志日志分析 例子 void crash_test_func() { int* ptr = nullptr; // 行号173 *ptr = 99; // 行号174 } // net 在 jni中调用 void Net::initEngine(const char* data) { crash_test_func(); // 行号179 } 以上程序,对一个空指针解引用做赋值操作,会抛出一个S异常。 抓取crash 日志 对于SIGSEGV等错

无人等人的博客 4923

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android addr2line 用法,分析安卓ANR tombstone使用ndk-stack addr2line

刷机过程中会碰到很多crash问题,此时安卓会在/data/tombstones目录下保存9个session文件,如下root@android:/#find.|greptombs./data/tombstones./data/tombstones/tombstone_00./data/tombstones/tombstone_01root@android:/#每个tombstone文件...

weixin_29958373的博客 1186

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Android】NDK开发Crash分析

如上所示,通过addr2line工具,可以看到libndkpractice.so文件中地址000000000000f1f0对应的源码是什么了,它对应的是源码中app/src/main/cpp/native-lib.cpp:7处代码,查看上下文后,确定为空指针问题。等表示的都是函数调用栈中栈帧的编号,其中编号越小的栈帧表示着当前最近调用的函数信息,所以栈帧标号#00表示的就是当前正在执行并导致程序崩溃函数的信息。则表示的是当前执行指令是在哪个文件当中,后面的小括号则是注明对应的是哪个函数。

微信公众号: 后端码匠 5466
上一篇: EAPOL四次握手流程
下一篇: wpas 关联流程分析
有多少个小土豆
博客等级 码龄10年 235粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值