利用addr2line来定位问题

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

[<c01b063c>] (msmfb_suspend+0x1c/0x2c) from [<c0083dc8>] (early_suspend+0xf8/0x1a4)
[<c0083dc8>] (early_suspend+0xf8/0x1a4) from [<c00640f0>] (worker_thread+0x14c/0x240)
[<c00640f0>] (worker_thread+0x14c/0x240) from [<c0068260>] (kthread+0x88/0x90)
[<c0068260>] (kthread+0x88/0x90) from [<c00299d8>] (kernel_thread_exit+0x0/0x8)


[   88.635314] pc : [<c01b063c>]    lr : [<c01b0640>]    psr: a0000013

用addr2line定位具体的代码行,可以分定位具体的库和vmlinux,下面分别举个示例:
#cd ~/project/boot/out/target/product/nice/obj/SHARED_LIBRARIES$


# addr2line 000282b8 -e
camera.msm7627a_intermediates/LINKED/camera.msm7627a.so


# addr2line -f -e vmlinux c01b063c msmfb_suspend
/home/gnutoo/embedded/htcdream/SHR/kernel/linux/drivers/video/msm/msm_fb.c:485

NDK 开发中快速定位 Crash 问题 该文章首发于微信公众号“字节流动” 在 NDK 开发中最熟悉的关键字非 “backtrace” 莫属,lnux 系统中进程 crash 后通过 backtrace 输出堆栈信息,开发者就是基于这些堆栈信息来定位代码问题。当然定位 Native 层代码问题最优的方式还是通过 IDE(AS、VS)或者 GDB 进行 debug 断点调试,本文针对的是使用第三方 C/C++ SDK 出现 cras... 阅读详情

相关推荐

SAP ABAP实战:用BAPI_PO_CREATE1创建采购订单时,如何巧妙处理PBXX和PB00条件类型?

本文深入探讨了在SAP ABAP开发中使用BAPI_PO_CREATE1创建采购订单时,如何有效处理PBXX和PB00条件类型的难题。通过分析外协加工订单的特殊需求,提供了从问题定位到解决方案的全流程方法,包括数据流向追踪、字段控制策略和增强实现方案,帮助开发者解决条件类型自动生成的业务痛点。

weixin_30614109的博客 824

addr2line快速定位进程异常位置

通过addr2line工具快速定位到C/C++程序出错的位置,方便查找问题根因

u013357557的专栏 8706

报错:subprocess.CalledProcessError: Command ‘[‘where‘, ‘cl‘]‘ returned non-zero exit status 1.

右键此电脑--属性--高级系统设置--环境变量--系统变量--找到Path。Enterprise是企业版,如果你是社区版就找Community。2.安装的时候,c++桌面那个需要勾选。

2301_77554343的博客 1507

linux中的line函数,Linux中addr2line命令起什么作用呢?

摘要:下文讲述Linux中addr2line的功能说明,如下所示;addr2line命令功能:用于将地址翻译成文件名和行号如:给一个可执行文件中的地址或一个可重定位对象中的偏移部分的地址可使用此命令找出与之相关的文件名和行号addr2line命令的语法格式:addr2line [参数] [地址]-----常用参数说明-------a:在函数名、文件和行号信息之前,显示地址,以十六进制形式-b:指定...

weixin_39770416的博客 518

GAN实战:用Python和TensorFlow打造你的第一个生成对抗网络(附完整代码)

本文是一份详细的GAN实战指南,指导读者使用Python和TensorFlow框架从零开始构建并训练一个生成对抗网络。文章涵盖了环境搭建、MNIST数据预处理、生成器与判别器模型构建、对抗性损失函数定义、训练循环编写以及关键的调试技巧,旨在帮助开发者通过动手实践深入理解GAN的核心原理与实现过程。

php55的博客 480

el-upload自定义上传dwg/dxf文件并且携带额外参数(CAD)

需求:需要使用el-upload自定义上传cad的图片或普通图片,这边需要判断区分下,以及上传后清空上传文件列表。

请叫我欧皇!的博客 1535

Linux调试工具 | Addr2line

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

qq_43416206的博客 9993

Pytest 常见问题及其解决方案

Pytest 是一个强大且灵活的测试框架,但初学者在使用过程中难免会遇到各种问题。希望通过这篇文章,你能更好地应对常见的挑战,写出更高效、更稳定的测试代码。测试不是负担,而是保障。写好测试不仅能提高代码质量,还能让你在面对变更时更加从容自信。

qq_52137592的博客 900

addr2line查看死机代码的位置

Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。这种功能对于追踪死机地址转换成源码位置很有意义。      在调用 Addr2line 工具时,要使用 -e 选项来指定可执行映像是 test,通过使用 -f 选项,可以告诉工具输出函数名。 例如:addr2line -e test   0x12

Tony的专栏 6075

在MacBook M1/M2上,手把手教你打包包含嵌入模型的RagFlow Docker镜像(避坑指南)

本文详细指导如何在MacBook M1/M2上构建ARM64架构的RagFlow Docker镜像,涵盖环境准备、依赖处理、镜像构建及性能优化全流程。特别针对Apple Silicon芯片的兼容性问题提供解决方案,帮助开发者高效完成本地开发环境搭建。

weixin_26908317的博客 242

视觉Transformer实战 | Transformer详解与实现

本文系统介绍了 Transformer 架构的核心原理与实现。相比传统 RNN 和 CNN,Transformer 凭借自注意力机制有效捕捉序列中的长距离依赖关系,支持并行训练,显著提升效率。其核心创新在于通过查询、键、值向量计算注意力权重,理解单词间的语义关联。架构包含编码器-解码器结构:编码器通过多头自注意力和前馈网络提取输入特征;解码器利用掩码自注意力和交叉注意力生成输出。本文使用 PyTorch 实现了缩放点积注意力、位置编码、层归一化等关键模块,并构建了完整的 Transformer 模型。

盼小辉丶的博客 4万+

Linux下addr2line命令用法

Linux下addr2line命令用于将程序指令地址转换为所对应的函数名、以及函数所在的源文件名和行号。当含有调试信息(-g)的执行程序出现crash时(core dumped),可使用addr2line命令快速定位出错的位置。 如果无法确定文件名或函数名,addr2line将在它们的位置打印两个问号;如果无法确定行号,addr2line将打印0或一个问号。 参数说明: (1).-a:在函数名、文件名和行号信息之前,以十六进制形式显示地址。 ...

网络资源是无限的 6万+

3、硬件工程师笔试面试学习汇总——器件篇目录(2025版本)

硬件工程师笔试面试学习

XU157303764的博客 7623

利用dmesg和addr2line来重现bug

1.用dmesg查找出错的代码段地址。 命令格式: [plain] view plain copy print? dmesg | grep program_name   其中program_name是可执行文件,比如: [plain] view plain copy print? $ dmesg | grep test_pro

lixingchenqq的专栏 451

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

gdb调试core dump入门实践(顺便复习一下之前介绍过的addr2line命令调试)

调试技能是软件开发的必备技能, 不会调试, 就抓不到bug, 就很痛苦。 本文我们来一起聊聊gdb调试core Part 1: 在前面的博文中, 我们聊过重要的addr2line调试, 现在再来一起看看, 就当是复习吧。 程序如下: #include int main() { int *p = NULL;

认知 行动 坚持 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

linux 内核 addr2line,Android或Linux调试addr2line工具锁定命令的使用

关于调试:调试中addr2line命令的使用。问题引出:i850的wifi定位开启后,在使用goole maps时出现rootfs重启现象,打印的log信息如下://////////////////////////I/DEBUG ( 3411): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***I/DEBUG (...

weixin_39779528的博客 363

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

利用backtrace的地址信息和addr2line命令定位so出错的行数

Linux开发中,底层经常会用到静态链接库(*.a)或动态链接库(*.so)来实现某一功能。 在应用层调用so文件时,也会经常遇到因为so内部的问题导致应用crash的现象。 crash发生后,系统会产生一个日志。日志大体内容如下: 01 I/DEBUG(349): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *...

爱自在的专栏 5943

linux addr2line 定位so库崩溃位置

在Linux下写C/C++程序的程序员,时常与CoreDump相见。在内存越界访问,收到不能处理的信号,除零等错误出现时,我们精心或不精心写就的程序就直接一命呜呼了,CoreDump是Linux仁慈地留下的程序的尸体,帮助程序员们解决了一个又一个问题。 有时配置不给力,Linux直接毁尸灭迹,没有了Core文件;又有时,刚好磁盘空间不足,Core文件写不下了。没有Core文件的时候,如何知道...

爱自在的专栏 1262

使用arm-eabi-addr2line, ndk-stack工具跟踪Android调用堆栈

使用arm-eabi-addr2line工具跟踪Android调用堆栈 作者:liangshengyang 转自:http://www.linuxidc.com/Linux/2011-01/31803.htm 在通常的C/C++代码中,可以通过响应对内存操作不当引起的Segmentation Fault错误即信号SIGSEGV(11)做出响应处理。只要在程序中设置SIGSEGV的

jacklce的专栏 1857

利用addr2line命令定位backtrace的Error行数

(1)发生Error的backtrace 我们就以经常出现NE为例,来说明这个情况,一般出现NE之后,main Log会有如下信息: 03-03 11:34:35.971851 10105 10105 I AEE_AED : pid: 690, tid: 10062, >>> /vendor/bin/hw/camerahalserver <<< 03-03 11:34:35.971953 10105 10105 I AEE_AED : read_request: rece

Flying snow 1374

linux Addr2line

http://elinux.org/Addr2line_for_kernel_debugging

994

Linux debug : addr2line追踪出错地址

调试zSeries上的Linux应用程序类似于调试其他体系结构上的Linux应用程序。对于有经验的Linux开发人员,最大的挑战是理解新的系统体系结构。对于刚接触Linux的大型机开发人员,掌握新的调试工具似乎是一项令人畏惧的任务。不要害怕。本文将提供一些有用的提示来帮助您入门。 学问来自实践,但是对于调试工具,在没有出现问题而迫使您去修复它们之前,“实践”是不会发生的。考虑到这点,下面将提供让您入门的“速成”指南。 User Debug 日志记录 调试一个崩溃的程序的第一步...

chenzhjlf的专栏 4044

Android或Linux调试addr2line工具锁定命令的使用

luther@gliethttp:~/kernel$ arm-none-eabi-addr2line -f -e arch/arm/boot/compressed/vmlinux 0 _start /home/luther/kernel/arch/arm/boot/compressed/head.S:107 其实类似于 luther@gliethttp:~/kernel$ arm-none

Sam 的专栏 1124

linux debug : addr2line追踪出错地址

http://www.cnblogs.com/wangkangluo1/archive/2012/06/23/2559247.html wangkangluo1 调 试zSeries上的Linux应用程序类似于调试其他体系结构上的Linux应用程序。对于有经验的Linux开发人员,最大的挑战是理解新的系统体系 结构。对于刚接触Linux的大型机开发人员,掌握新的调试工具

johns78m的专栏 754

Android问题笔记四十三:JNI 开发如何快速定位崩溃问题

我们做 JNI 开发的时候,一旦触发 BUG 可能直接造成崩溃,当 Linux 应用程序在执行时如果发生严重错误,一般会导致程序 crash。Linux 专门提供了一类 crash 信号,在程序接收到此类信号时,缺省操作是将 crash 的现场信息及时记录到 core 文件,接着进行终止进程的操作。 而且崩溃不能在 Android Studio 的 Logcat 中直接查看出来。这就给定位问题产生了很大的阻碍。但这并不是无法定位。

空名先生 1731
上一篇: android app不受build.prop中的dalvik heapsize限制
下一篇: 黑屏或特殊情形下查看对应进程的栈和调用情况
AKeywordSE
博客等级 码龄12年 1粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值