【问题标题】:Phone reboots while running program运行程序时手机重启
【发布时间】:2011-11-29 15:51:31
【问题描述】:

我的程序日志显示这个的任何原因?不知何故,我的程序冻结了整个操作系统,没有按键或触摸屏输入工作。当我插入 USB 并尝试使用 DDMS 查看问题时,我通常会看到此问题,然后手机会自行重启。

11-28 18:42:43.418: I/ActivityThread(12904): Removing dead content provider: settings
11-28 18:42:43.428: E/JavaBinder(23580): !!! FAILED BINDER TRANSACTION !!!
11-28 18:42:43.438: I/ServiceManager(52): service 'backup' died

我知道我的程序是罪魁祸首,因为它是唯一一个似乎可以正常工作的应用程序,因为它会输出常规消息。我正在使用蓝牙 SPP 连接做一些非常繁重的工作,然后使用 NDK 进行实时绘图和数学计算。似乎无法访问“/data/anr/traces.txt”,因为 DDMS 不会在“/data”中列出任何内容。关于如何找出崩溃原因的任何想法?

使用的硬件/软件:可以在 Emulator 2.2 或 MyTouch 3G 上遇到相同的错误。使用最新的 NDK 版本。由于蓝牙,定位到 Android 2.2。

【问题讨论】:

  • 你想用“繁重的”位做什么?将ContentProviders 与 NDK 一起使用似乎是一个可怕的想法……您知道什么代码可能导致此问题吗?
  • 我正在通过 SPP 读取蓝牙数据,然后以 256/秒的采样率绘制某些数据位,然后我将数据以每秒约 9k 字节的速度写入文件,也在做对数据进行一些高斯 FIR/IIR 和 FFT 滤波器,然后通过 JNI 和 NDK 使用自定义 C 文件生成数据。然后这会触发 GUI 上的侦听器以使用新的计算值进行更新。所以是的,线程和繁重的工作......大声笑
  • 也许尝试将您的 NDK 代码封装在 Java 线程中,而不是本地管理线程?也就是说,Android ThreadASyncTask
  • NDK 调用实际上是在它们自己的 Android 线程中。

标签: android bluetooth android-ndk reboot


【解决方案1】:

听起来你已经成功地引发了内核恐慌,干得好! :)

现在要做的就是注释掉程序的某些部分,直到它可以运行而不会因内核恐慌而重新启动手机或本机崩溃。然后在 in 中将内容注释掉,直到找到间接导致错误的确切行。

【讨论】:

  • 哦,发现这个错误真是太有趣了,在你最好的“猜测”中,你认为最可能的原因是什么?蓝牙、实时图还是 NDK 数学?
  • NDK 是唯一可能导致内核崩溃的东西。几乎任何 java 错误都会导致 ANR 错误,而不是内核恐慌 :)
  • 我的猜测——这只是一个猜测——是蓝牙驱动程序中的一个错误。如果您提供正在使用的硬件以及操作系统和内核版本信息,将会很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 2011-04-06
  • 1970-01-01
相关资源
最近更新 更多