首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >相同的崩溃会根据设备产生不同的堆栈跟踪。

相同的崩溃会根据设备产生不同的堆栈跟踪。
EN

Stack Overflow用户
提问于 2014-12-30 15:06:26
回答 1查看 215关注 0票数 0

我在Google Play上有一个应用程序,它正在遭受由一个空指针异常调用的崩溃。在Google控制台上查看崩溃的堆栈跟踪时,即使Android版本相同,堆栈跟踪报告的行号也因设备而异。既然这是Android代码,而且它是相同版本的Android,那么为什么行号不一样?

我有几个猜想: 1.)控制台将这些设备报告为Android4.4,但它们可能有不同的4.4.x版本。2.)这些是不同的设备,因此制造商已经更改了SDK中的一些代码,以说明每个特定的设备。

非常感谢所有的帮助,下面复制了示例堆栈跟踪。

此堆栈跟踪来自运行Android4.4的三星设备:

无法创建服务android.app.ActivityThread.access$1900(ActivityThread.java:174) at android.app.ActivityThread.access$1900(ActivityThread.java:174) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1389) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java,java.lang.RuntimeException: java.lang.NullPointerException:存储==空:5593)在java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(原生方法)的java.lang.reflect.Method.invokeNative(本地方法),原因是: java.lang.NullPointerException:存储== null at java.util.Arrays$ArrayList.(Arrays.java:38) at java.util.Arrays.asList(Arrays.java:155)

这个是来自不同的设备,但它也运行Android4.4:

无法创建服务android.app.ActivityThread.access$1800(ActivityThread.java:138) at android.app.ActivityThread.access$1800(ActivityThread.java:138) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java,java.lang.RuntimeException: java.lang.NullPointerException:存储==空:5111)在java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:780) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596) at dalvik.system.NativeStart.main(原生方法)的java.lang.reflect.Method.invokeNative(本地方法),原因是: java.lang.NullPointerException:存储== null at java.util.Arrays$ArrayList.(Arrays.java:38) at java.util.Arrays.asList(Arrays.java:155)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-30 15:20:18

在我看来是一样的,看这条公共行,Caused by: java.lang.NullPointerException: storage == null at java.util.Arrays$ArrayList.(Arrays.java:38) at java.util.Arrays.asList(Arrays.java:155)

MainService类的某个位置,您似乎正在尝试将空数组转换为列表。让我们通过查看Arrays.asList代码来确认

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public static <T> List<T> asList(T... array) {
        return new ArrayList<T>(array);
    }

好的,这调用了一个构造函数,它是也是在Arrays.java中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    ...
    ArrayList(E[] storage) {
        if (storage == null) {
            throw new NullPointerException("storage == null");
        }
        a = storage;
    }
    ...

这是storage == null漫画的发源地。我的建议是,检查应用程序中空数组的使用情况。

为什么行号不一样?

这些不同的行与android框架有关,在这种特殊情况下,它如何启动您的服务,然后在启动过程中找到一个Null指针,然后失败。启动服务可能因设备而异,取决于制造商和API级别。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27713883

复制
相关文章
内部异常堆栈跟踪的结尾_异常堆栈跟踪不可用
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说内部异常堆栈跟踪的结尾_异常堆栈跟踪不可用,希望能够帮助大家进步!!!
Java架构师必看
2022/09/12
2.6K0
相同的时间,不同的人生
在规定的时间内,一个人目标的达成情况(创造的价值),我们称之为效率。如此可见效率与时间是密切相关的,提高效率首先要做的就是提高我们的时间利用率。
keinYe
2020/05/25
1.2K0
uniapp根据不同的状态渲染不同的标签
<view class="text-grey text-xs"> <button v-if="item.isLeave === 0">离厂解绑</button> <span v-else > {{item.leaveTime | formatDate }} </span> </view> json数据 { "msg": "查询成功", "total": 15, "c
王小婷
2021/07/08
1.6K0
consul注册相同服务,相同程序,相同IP,不同端口来负载的问题
由于今天发现运维代码未正常发布。想要自己手动发布。发现原有服务名mos-x3-gls-service只有1个node启动,为了保障发布时原有服务不中断我需要再注册1个node,于是我简单修改了原有springboot端口9112为9113,启动后发现9113的节点正常注册,但是原来9112端口的节点服务没有了,搞了个寂寞。原因是如果在Spring Cloud Consul中使用相同的节点id进行注册,那么Consul将会将它们视为同一个节点,并将它们注册为同一个节点。老了,大意了。于是我把注册consul的节点id设置为服务名称+进程id即可解决。
高久峰
2023/06/17
5150
算法专题(动规):不同的定义产生不同的解法
今天聊一道 4 键键盘问题,这个问题挺有意思,而且可以明显感受到:对 dp 数组的不同定义需要完全不同的逻辑,从而产生完全不同的解法。
帅地
2019/10/14
8430
算法专题(动规):不同的定义产生不同的解法
Simulator 和 Emulator 的相同和不同;
在看模拟器的时候,出现了关于Simulator和Emulator两种词汇;都可以翻译为模拟器;但在调研游戏模拟器的时候,多为Emulator; 两者词汇的含义和应用场景有什么异同呢?
西湖醋鱼
2021/02/23
2K0
LWN:快速、低开销的堆栈跟踪工具SFrame!
获取运行中程序的 stack trace 在很多场景下都非常有用:跟踪(tracing)、性能分析(profiling)、调试、性能优化等。虽然已经有了一些机制可以获取 stack trace,但它们存在一些缺点。于是"Simple Frame"(SFrame) stack trace 格式应运而生,希望解决其他技术的不足之处。今年五月,Steve Rostedt 和 Indu Bhagat 在 LSFMM+BPF 活动中就内核中的 SFrame 支持进行了演讲;几天后,Bhagat 在温哥华的北美开源峰会上做了一个更加全面的关于 SFrame 的演讲(YouTube 上有视频)。第二个演讲可以帮助了解 SFrame 和整体 stack trace 的其他方面。
Linux阅码场
2023/09/11
3430
LWN:快速、低开销的堆栈跟踪工具SFrame!
iOS 真机导出崩溃堆栈日志
那就是使用第三方bugly来记录崩溃日志,在bugly上配置好符号表后方法调用即可清晰可见。
小明同学接音视频
2020/12/22
2.2K0
iOS 真机导出崩溃堆栈日志
VC++ 崩溃处理以及打印调用堆栈
一般当程序发生异常时,用户代码停止执行,并将CPU的控制权转交给操作系统,操作系统接到控制权后,将当前线程的环境保存到结构体CONTEXT中,然后查找针对此异常的处理函数。系统利用结构EXCEPTION_RECORD保存了异常描述信息,它与CONTEXT一同构成了结构体EXCEPTION_POINTERS,一般在异常处理中经常使用这个结构体。 异常信息EXCEPTION_RECORD的定义如下:
Masimaro
2018/08/31
3.6K0
检查托管堆栈跟踪 (dotnet-stack)
控制台复制 # comment Thread (0x1234): module!Method module!Method Thread (0x5678): [Native Frames] Module!Method Module!Method
用户4268038
2022/01/08
4090
根据某列相同元素求和
下面是一个需要计算相同基因的exon的长度的文件,即根据相同的基因,先计算基因的起点到终点的距离,再对相同的基因的的exon距离求和
生信编程日常
2020/06/11
9970
根据某列相同元素求和
检查托管堆栈跟踪 (dotnet-stack)
若要安装最新版 dotnet-stack NuGet 包,请使用 dotnet tool install 命令:
呆呆
2022/01/09
5100
【Node.js练习】根据不同的url响应不同的html内容
 进去之后默认的就是首页也就是/当我们再地址栏输入index.html同样也是首页
坚毅的小解同志的前端社区
2022/11/28
1.8K0
【Node.js练习】根据不同的url响应不同的html内容
WordPress 技巧:设置不同的访问设备加载不同的主题
有些时候我们需要在特定情况下(如移动设备访问时)加载不同于站点现在选择的 WordPress 主题,可以使用以下代码:
Denis
2023/04/15
8360
根据不同的业务场景,选择合适的锁?
锁可以解决并行执行任务执行过程中对,共享数据顺序访问、修改的场景。比如对同一个账户进行并行扣款或者转账。下面我们展开讨论下 synchronized 、ReetranLock 以及他们的使用。
没有故事的陈师傅
2023/05/01
5620
根据不同的业务场景,选择合适的锁?
点击加载更多

相似问题

主干代码会产生不可用的堆栈跟踪

20

例程上的Mongodb查询会产生巨大的堆栈跟踪。

11

添加异常断点会导致没有堆栈跟踪的崩溃

10

相同的代码会产生不同的结果

22

JVM崩溃堆栈跟踪

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文