android - android设备上二进制文件损坏的可能原因是什么

标签 android c++ c linux binaryfiles

最近我正在调查二进制文件损坏的原因。具体来说,我们有一个 android app,native 部分可以读/写 SD 卡上的二进制文件。有时,二进制文件由于未知原因而损坏。我们从不同的用户那里收集了其中一些文件,并发现了一些有趣的事实。

大多数损坏是二进制文件的前 4096 个字节被删除。当我对这些文件进行 hexdump 时,前 4096 个字节全为零。不超过 4096 或少于 4096,但正好是 4096 字节。我认为这不是巧合。我知道 4096 字节是一页大小。但缺乏经验,我无法弄清楚原因,更重要的是,我不知道如何避免其他用户/设备发生此类事情。

除此之外,在一些二进制文件的中间,还有一些不应该存在的连续零段。如果不是我们程序的bug,有没有可能是平台/设备内核,或者设备突然没电之类的原因?

希望有过类似情况的人能给我一些提示/建议/解决方案等。这真的让我很困惑。

非常感谢~

最佳答案

我在一些会损坏二进制文件的嵌入式应用程序方面有一些类似的经验。 首先,仔细检查您的文件处理(特别是在多线程环境中),我可以想象您已经彻底完成了。 然后,尝试同步所有的作品。 linux内核不会在您命令应用程序写入时写入,而是在刷新到磁盘之前缓冲数据。

http://linux.die.net/man/2/sync

希望这会有所帮助。

关于android - android设备上二进制文件损坏的可能原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35007962/

相关文章:

c - 获取 char 数组的所有行和段错误

java - 安卓工作室(Java): Continue prime number for loop on button press

java - 当我引用 ArrayList.add 方法时,Android 应用程序在启动时崩溃

c - 在 C 中执行 while 循环

c++ - 使用 MPI 在超立方体中广播

C++ 错误 C2059

c++ - 手动替代消息映射?

android - 通过 Intent 将编辑文本的文本移动到另一个 Activity 会引发异常

android - 建立Android ionic 项目时发生错误

c++ - BlackBerry 10 - 对话框