我是一名有用的助手,可以进行文本翻译。
我正在开发一个通过蓝牙记录数据的应用程序,但在收集数据数小时后会出现间歇性崩溃(这使得很难追踪错误)。 logcat输出并不是很有帮助:
我正在开发一个通过蓝牙记录数据的应用程序,但在收集数据数小时后会出现间歇性崩溃(这使得很难追踪错误)。 logcat输出并不是很有帮助:
没有任何异常抛出,也没有迹象表明进程被终止的原因。
我该如何找出问题出在哪里?是否有未在logcat中显示的抛出异常?如何跟踪这个bug?
没有任何异常抛出,也没有迹象表明进程被终止的原因。
我该如何找出问题出在哪里?是否有未在logcat中显示的抛出异常?如何跟踪这个bug?
Signal 9是SIGKILL,它会立即终止一个进程(进程内部的处理程序不会运行)。根据日志记录行,该进程正在自杀,因此没有外部代理发出SIGKILL信号。
我猜测(只是猜测),在您的进程中运行的内存管理代码(作为基础设施的一部分,而不是您编写的代码)决定您已经耗尽了某些资源,唯一的解决方法就是停止运行。我预计在达到这个点之前应该会有更多的消息,所以值得浏览日志历史记录,看看在这个点之前是否有有用的警告信息。
在此之前的行是GC日志,这意味着某种内存资源正在枯竭。但是看起来堆并没有满,因此似乎不太可能出现分配失败的情况。如果要分配的对象太大无法放入堆中,或者由于碎片化而无法分配,则仍然可能出现分配失败的情况。然而,在这种情况下,我会期望看到更多相关的日志信息。
我认为捕获更多日志(必要时可以按您的应用程序PID进行过滤)将有助于您取得进展。
这个问题发生在使用 RXjava 且没有实现 onError
回调方法时。