Android native崩溃问题分析

最近在做NDK项目的时候,出现了启动应用就崩溃了,崩溃日志如下:

10:41:04.743  A  Build fingerprint: 'samsung/g0qzcx/g0q:13/TP1A.220624.014/S9060ZCU4CWH1:user/release-keys'
10:41:04.743  A  Revision: '12'
10:41:04.743  A  ABI: 'arm64'
10:41:04.743  A  Processor: '5'
10:41:04.743  A  Timestamp: 2025-05-16 10:41:04.376681759+0800
10:41:04.743  A  Process uptime: 2s
10:41:04.743  A  Cmdline: com.virtual.video.i18n
10:41:04.743  A  pid: 22011, tid: 22112, name: DefaultDispatch  >>> com.virtual.video.i18n <<<
10:41:04.743  A  uid: 11565
10:41:04.743  A  tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
10:41:04.743  A  pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)
10:41:04.743  A  signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0000000000000000
10:41:04.743  A  Cause: null pointer dereference
10:41:04.743  A      x0  0000000000000000  x1  0000000000000000  x2  00000072024ba590  x3  00000072024ba578
10:41:04.743  A      x4  0000000000000000  x5  8080000000000000  x6  00000072024ba5e1  x7  7f7f7f7f7fffffff
10:41:04.743  A      x8  0000000000000000  x9  0000000000000004  x10 b40000733d478ec8  x11 fffffffffffffffc
10:41:04.743  A      x12 0000000000000004  x13 b4000072dd479cd4  x14 00000000fffffffc  x15 00000071a3bba0d0
10:41:04.743  A      x16 00000071a39ea820  x17 00000075a90049c0  x18 0000007202cc2000  x19 0000000000000000
10:41:04.743  A      x20 00000072024ba4f0  x21 00000072024ba578  x22 00000072024ba750  x23 00000072024ba5e1
10:41:04.743  A      x24 00000072024bd000  x25 00000072024bd000  x26 00000072024ba799  x27 00000072024ba751
10:41:04.743  A      x28 00000072024bd000  x29 00000072024ba4c0
10:41:04.743  A      lr  00000071a39a30a4  sp  00000072024ba4b0  pc  00000075a90049d0  pst 0000000080001000
10:41:04.743  A  backtrace:
10:41:04.743  A        #00 pc 000000000004c9d0  /apex/com.android.runtime/lib64/bionic/libc.so (__strlen_aarch64+16) (BuildId: 54071c506231d1ab2d3653b44eddcea5)
10:41:04.743  A        #01 pc 00000000000990a0  /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/lib/arm64/libc++_shared.so (std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >::assign(char const*)+24) (BuildId: fe1b5f695d356c857834778696686059de87f7f8)
10:41:04.743  A        #02 pc 000000000035e0fc  /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/lib/arm64/libwscorekit.so (NsComm::CSimpleLog::Init(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)+104) (BuildId: 276a833f5f553ef5dd1977429d564029b599b83e)
10:41:04.743  A        #03 pc 00000000002981a0  /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/lib/arm64/libwscorekit.so (QtLog::InitLog(int, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)+264) (BuildId: 276a833f5f553ef5dd1977429d564029b599b83e)
10:41:04.743  A        #04 pc 000000000029877c  /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/lib/arm64/libwscorekit.so (QtLog::QtTrack_InitLog(int, char const*, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >)+172) (BuildId: 276a833f5f553ef5dd1977429d564029b599b83e)
10:41:04.743  A        #05 pc 0000000000296cbc  /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/lib/arm64/libwscorekit.so (NsQtTrack::QT_Track(int, char const*, char const*, char const*, char const*, char const*, char*)+680) (BuildId: 276a833f5f553ef5dd1977429d564029b599b83e)
10:41:04.743  A        #06 pc 0000000000297e60  /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/lib/arm64/libwscorekit.so (NsQtTrack::InnerTrack(char const*, char const*, char const*, char const*, char*)+1056) (BuildId: 276a833f5f553ef5dd1977429d564029b599b83e)
10:41:04.743  A        #07 pc 000000000021f414  /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/lib/arm64/libwscorekit.so (NsDrive::QtReport(Json::Value&)+692) (BuildId: 276a833f5f553ef5dd1977429d564029b599b83e)
10:41:04.743  A        #08 pc 000000000021f9a4  /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/lib/arm64/libwscorekit.so (BuildId: 276a833f5f553ef5dd1977429d564029b599b83e)
10:41:04.743  A        #09 pc 00000000000047f8  /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/lib/arm64/libWondershareDrive.so (Java_com_wondershare_drive_WondershareDriveApi_nativeInit+108) (BuildId: a75ca5f6e52c9bc7beb5074f928f66ff12b835f9)
10:41:04.743  A        #10 pc 0000000000461d54  /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #11 pc 000000000020a2b0  /apex/com.android.art/lib64/libart.so (nterp_helper+4016) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #12 pc 00000000004c1498  [anon:dalvik-classes18.dex extracted in memory from /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/base.apk!classes18.dex] (com.wondershare.drive.WondershareDriveApi.init+132)
10:41:04.743  A        #13 pc 000000000020a958  /apex/com.android.art/lib64/libart.so (nterp_helper+5720) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #14 pc 00000000000057f2  [anon:dalvik-classes10.dex extracted in memory from /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/base.apk!classes10.dex] (com.virtual.video.app.ThirdSdkInitWrapper$initCloudStorage$1.invokeSuspend+254)
10:41:04.743  A        #15 pc 000000000020a254  /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #16 pc 000000000012d3a6  [anon:dalvik-classes19.dex extracted in memory from /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/base.apk!classes19.dex] (kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith+42)
10:41:04.743  A        #17 pc 000000000020b120  /apex/com.android.art/lib64/libart.so (nterp_helper+7712) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #18 pc 0000000000176398  [anon:dalvik-classes19.dex extracted in memory from /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/base.apk!classes19.dex] (kotlinx.coroutines.DispatchedTask.run+448)
10:41:04.743  A        #19 pc 000000000020b074  /apex/com.android.art/lib64/libart.so (nterp_helper+7540) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #20 pc 00000000001b04e2  [anon:dalvik-classes19.dex extracted in memory from /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/base.apk!classes19.dex] (kotlinx.coroutines.internal.LimitedDispatcher$Worker.run+10)
10:41:04.743  A        #21 pc 000000000020b074  /apex/com.android.art/lib64/libart.so (nterp_helper+7540) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #22 pc 00000000001b80a2  [anon:dalvik-classes19.dex extracted in memory from /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/base.apk!classes19.dex] (kotlinx.coroutines.scheduling.TaskImpl.run+6)
10:41:04.743  A        #23 pc 000000000020a254  /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #24 pc 00000000001b716e  [anon:dalvik-classes19.dex extracted in memory from /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/base.apk!classes19.dex] (kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely+2)
10:41:04.743  A        #25 pc 000000000020a254  /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #26 pc 00000000001b5d4a  [anon:dalvik-classes19.dex extracted in memory from /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/base.apk!classes19.dex] (kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask+34)
10:41:04.743  A        #27 pc 000000000020a254  /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #28 pc 00000000001b5e78  [anon:dalvik-classes19.dex extracted in memory from /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/base.apk!classes19.dex] (kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker+56)
10:41:04.743  A        #29 pc 000000000020a254  /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #30 pc 00000000001b5e28  [anon:dalvik-classes19.dex extracted in memory from /data/app/~~1RHMqel4j5AuIl27Q6XW7Q==/com.virtual.video.i18n-WAL7gWjRDiIYE7hIiUOjPA==/base.apk!classes19.dex] (kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run+0)
10:41:04.743  A        #31 pc 000000000045836c  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+556) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #32 pc 00000000004841e4  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #33 pc 0000000000483eb0  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+400) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #34 pc 00000000005cc668  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1680) (BuildId: 4c9b59b74ca9272f710a71137164c349)
10:41:04.743  A        #35 pc 00000000000bb6e8  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208) (BuildId: 54071c506231d1ab2d3653b44eddcea5)
10:41:04.743  A        #36 pc 0000000000054fdc  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 54071c506231d1ab2d3653b44eddcea5)

关键截图如下:
在这里插入图片描述
这时候需要借助堆栈翻译工具和带符号的so,找到对应堆栈。

工具对应的NDK目录如下:

ndk\21.4.7075529\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin

通过查看堆栈信息:

在这里插入图片描述
可以看到发生崩溃的地址,然后使用命令:

aarch64-linux-android-addr2line.exe -e xxx.so -C -f -s 000000000035e0fc(上面标注的地址)

就可以得到结果:

NsComm::CSimpleLog::Init(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)

还可以多看几个:

aarch64-linux-android-addr2line.exe -e xxx.so -C -f -s 00000000002981a0

得到结果:

QtLog::InitLog(int, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)

这样就比较容易定位的出问题的方法。

如果是在Linux系统上,还可以通过nm命令来查看符号表。

nm -D xxx.so

感谢大家的支持,如有错误请指正,如需转载请标明原文出处!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Shell的基本操作】

文章目录 一、实验目的二、实验环境三、实验内容3.1 Shell变量与脚本基础3.2 定制终端提示符&#xff08;PS1变量&#xff09;3.3 文件查找与类型确认&#xff08;find命令&#xff09;3.4 管道命令实战&#xff08;用户登录统计&#xff09;3.5 交互式备份压缩脚本 四、总结4.…

快速选择算法:优化大数据中的 Top-K 问题

在处理海量数据时&#xff0c;经常会遇到这样的需求&#xff1a;找出数据中最大的前 K 个数&#xff0c;而不必对整个数据集进行排序。这种场景下&#xff0c;快速选择算法&#xff08;Quickselect&#xff09;就成了一个非常高效的解决方案。本文将通过一个 C 实现的快速选择算…

AQS 基本思想与源码分析

充分了解 AbstractQueuedSynchronizer 对于深入理解并发编程是有益处的&#xff0c;它是用来构建锁或者其他同步组件的基础框架&#xff0c;我们常用的同步工具类如 CountDownLatch、Semaphore、ThreadPoolExecutor、ReentrantLock 和 ReentrantReadWriteLock 内部都用到了它。…

理解位图算法:使用 C++ 实现高效数据查重

在处理海量数据时&#xff0c;我们常常需要检查某个元素是否已经存在于集合中。传统的方法如哈希表或集合容器虽然有效&#xff0c;但在数据量极大的情况下会占用大量内存。这时&#xff0c;位图算法 (Bitmap) 就成为了一种非常高效的解决方案。本文将通过分析一段使用位图算法…

数学复习笔记 12

前言 现在做一下例题和练习题。矩阵的秩和线性相关。另外还要复盘前面高数的部分的内容。奥&#xff0c;之前矩阵的例题和练习题&#xff0c;也没有做完&#xff0c;行列式的例题和练习题也没有做完。累加起来了。以后还是得学一个知识点就做一个部分的内容&#xff0c;日拱一…

1-10 目录树

在ZIP归档文件中&#xff0c;保留着所有压缩文件和目录的相对路径和名称。当使用WinZIP等GUI软件打开ZIP归档文件时&#xff0c;可以从这些信息中重建目录的树状结构。请编写程序实现目录的树状结构的重建工作。 输入格式: 输入首先给出正整数N&#xff08;≤104&#xff09;…

Python爬虫实战:研究 RPC 远程调用机制,实现逆向解密

1. 引言 在网络爬虫技术的实际应用中,目标网站通常采用各种加密手段保护其数据传输和业务逻辑。这些加密机制给爬虫开发带来了巨大挑战,传统的爬虫技术往往难以应对复杂的加密算法。逆向解密作为一种应对策略,旨在通过分析和破解目标网站的加密机制,获取原始数据。 然而,…

debugfs:Linux 内核调试的利器

目录 一、什么是 debugfs&#xff1f;二、debugfs 的配置和启用方式2.1 内核配置选项2.2 挂载 debugfs2.3 Android 系统中的 debugfs 三、debugfs 的典型应用场景3.1 调试驱动开发3.2 内核子系统调试3.3 性能分析 四、常见 debugfs 子目录与功能示例4.1 /sys/kernel/debug/trac…

lua 作为嵌入式设备的配置语言

从lua的脚本中获取数据 lua中栈的索引 3 | -1 2 | -2 1 | -3 可以在lua的解释器中加入自己自定的一些功能,其实没啥必要,就是为了可以练习下lua

棋牌室台球室快速接入美团团购接口

北极星平台从2024年12月份开始慢慢关闭&#xff0c;现在很多开发者反馈北极星token已经不能刷新了&#xff0c;全部迁移到美团团购综合平台。 申请这个平台要求很高 1、保证金费用要15万起步 2、平台必须是二级等保和安全产品 &#xff0c;一个二级等保费用10万起步 所以很多…

开源轻量级地图解决方案leaflet

Leaflet 地图&#xff1a;开源轻量级地图解决方案 Leaflet 是一个开源的 JavaScript 库&#xff0c;用于在网页中嵌入交互式地图。它以轻量级、灵活性和易用性著称&#xff0c;适用于需要快速集成地图功能的项目。以下是关于 Leaflet 的详细介绍和使用指南。 1. Leaflet 的核心…

一个批量文件Dos2Unix程序(Microsoft Store,开源)1.1.0 编码检测和预览

之前的版本是个意思意思&#xff0c;验证商店发布的&#xff08;其实是我以前自己用的工具&#xff09;&#xff0c;这次把格式检查和转换都做上了&#xff0c;功能应该差不多了&#xff0c;还有一些需要小改进的地方。 因为还没什么用户嘛&#xff0c;还是保持全功能免费试用。…

特征提取:如何从不同模态中获取有效信息?

在多模态学习中&#xff0c;不同模态&#xff08;文本、图像、语音、视频、传感器数据等&#xff09;所携带的信息丰富且互补。但不同模态的数据结构、表示空间、时空分布截然不同&#xff0c;因此&#xff0c;如何对各模态进行高效、有效的特征提取&#xff0c;是整个多模态学…

Go语言爬虫系列教程 实战项目JS逆向实现CSDN文章导出教程

爬虫实战&#xff1a;JS逆向实现CSDN文章导出教程 在这篇教程中&#xff0c;我将带领大家实现一个实用的爬虫项目&#xff1a;导出你在CSDN上发布的所有文章。通过分析CSDN的API请求签名机制&#xff0c;我们将绕过平台限制&#xff0c;获取自己的所有文章内容&#xff0c;并以…

交叉熵损失函数,KL散度, Focal loss

交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09; 交叉熵损失函数&#xff0c;涉及两个概念&#xff0c;一个是损失函数&#xff0c;一个是交叉熵。 首先&#xff0c;对于损失函数。在机器学习中&#xff0c;损失函数就是用来衡量我们模型的预测结果与真实结果之间…

149.WEB渗透测试-MySQL基础(四)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;148.WEB渗透测试-MySQL基础&#xff08;三&#xff09; 非关系型数据库&#xff1a; &a…

c/c++中程序内存区域的划分

c/c程序内存分配的几个区域&#xff1a; 1.栈区&#xff1a;在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放&#xff0c;栈内存分配运算内置于处理器的指令集中&#xff0c;效率很高但是分配的内存容量有…

构建稳定的金字塔模式生态:从自然法则到系统工程

在自然界中&#xff0c;金字塔结构广泛存在于生态系统之中&#xff0c;表现为营养级能量金字塔、生物量金字塔和数量金字塔等形式。这种结构不仅形象地描述了生态能量流转的规律&#xff0c;也体现出生态系统中“稳定性”与“层级性”的天然法则。在现代软件架构、企业组织、平…

Vue 3.0双向数据绑定实现原理

Vue3 的数据双向绑定是通过响应式系统来实现的。相比于 Vue2&#xff0c;Vue3 在响应式系统上做了很多改进&#xff0c;主要使用了 Proxy 对象来替代原来的 Object.defineProperty。本文将介绍 Vue3 数据双向绑定的主要特点和实现方式。 1. 响应式系统 1.1. Proxy对象 Vue3 …

TIP-2021《SRGAT: Single Image Super-Resolution With Graph Attention Network》

推荐深蓝学院的《深度神经网络加速&#xff1a;cuDNN 与 TensorRT》&#xff0c;课程面向就业&#xff0c;细致讲解CUDA运算的理论支撑与实践&#xff0c;学完可以系统化掌握CUDA基础编程知识以及TensorRT实战&#xff0c;并且能够利用GPU开发高性能、高并发的软件系统&#xf…