【发布时间】:2016-02-20 17:00:49
【问题描述】:
我知道这个问题会很模糊,对不起。
我们在 Android 和 iOS 上开发了一个原生 C++ 应用程序,这两个平台共享大部分代码(只有很少,特定于平台的东西)。我们的 QA 报告了相当多的 Android 上相对随机的崩溃,这些崩溃要么完全隐藏在 libc++、libc 或我们正在使用的一些第三方代码中。
它在 iOS 上运行良好。
实际上,如何处理这种情况并修复这些崩溃?不幸的是,Android 在原生开发方面非常糟糕,在三星设备上附加调试器是绝对不可能的,而且获得有意义的堆栈跟踪也是不可能的。
【问题讨论】:
-
有很多关于如何使用'gdb'在设备上调试android应用程序的教程,例如:mhandroid.wordpress.com/2011/01/25/…。这有什么不好?
-
@Ctx 三星设备自 Android 2.3 以来存在一个错误,该错误至今仍未修复,不允许 gdb 调试。大多数(如果不是全部)崩溃都发生在三星设备上。
-
我对 Android 开发不是很熟悉,但是如何获取核心转储或使用类似 Google Breakpad 的东西从设备中提取一些数据?
-
真的很奇怪的显式日志文件,但如果应用程序在客户端手中,这将是有问题的。我认为核心逻辑在模拟中被滥用时可以正常工作?
-
您可能想尝试使用 valgrind 和/或 llvm 的 address-santizer。让事情运行起来可能需要一些工作,但这当然是可能的(我都使用过)。您可能需要 root 设备,但这通常并不难。
标签: java android c++ java-native-interface cocos2d-x