我正在编写一个Android应用程序,其中有一个我在几个地方扫描过的数组。出于某种原因,有时它会使用ArrayIndexOutOfBoundsException在其中一个地方崩溃。当我调试它时,崩溃时的索引总是完全合理并且在数组的范围内(尽管每次都有不同的索引)。更烦人的是,我无法查看数组的内容,因为每次我滚动变量时调试器都会在到达数组之前断开连接。我将数组设置为我在C函数中创建并返回的数组(使用Android NDK等),我最好的猜测是有时候我得到的数组非常混乱,但它的工作原理很好,当它崩溃时,它通常不会在索引0上崩溃,所以不管怎样我 在这些情况下,从C代码获取必须仍然能够很好地从某些内容中读取。另外可能相关的信息是,如果我在没有崩溃的情况下停止应用程序,调试器在查看阵列时没有问题。
发布于 2019-01-07 10:50:35
当事情变得很奇怪的(当像i
和j
是int
的和后j = i * i
j
具有35的值),我找了一个多线程的问题。(我已经看到CPU执行无序操作的类似问题。没有多个线程,但也可能有。)将数组引用转换为局部变量并使用它。然后,其他线程可以更改数组中的值,但它们不能更改其长度。
然后,您可能希望了解运行的线程,正在执行的操作以及正在执行的操作,以防止它们粉碎数据。
另外:调试器在遇到异常时可能无法停止所有线程。(在某个地方可能有一个选项。)
https://stackoverflow.com/questions/-100000968
复制相似问题