如何配置 3rd-party 应用程序?
Posted
技术标签:
【中文标题】如何配置 3rd-party 应用程序?【英文标题】:How to profile 3rd-party app? 【发布时间】:2014-04-15 13:18:17 【问题描述】:我从 Google Play 安装了一些第 3 方应用。出于某些研究目的,我需要分析这些应用程序。
例如,分析某些回调函数(如“onCreat()”“onStartCommand()”“onStopped()”)的开始和结束时间。
有什么线索吗?
【问题讨论】:
【参考方案1】:如果您可以在调试器下运行整个程序,那么第 3 方代码是否有调试信息并不重要,只要您按下 Ctrl-C 或暂停,并且如果它在您的回调之一中,它显示堆栈上的回调。
堆栈跟踪在您的回调中应该如下所示:
<some system/library routines called by your callback>
...
YourCallbackCode
...
<the 3rd-party routines>
...
YourTopLevelCode
...
main()
因此,如果您抽取 10 或 20 个这样的样本,YourCallbackCode
出现在堆栈上的时间部分可以很好地估计它负责的时间部分。
(除非它非常小,在这种情况下你的代码不是瓶颈。)
例如,如果它在 50% 的堆栈样本上,它负责 50% 的时间(大约)。
因此,如果您可以将时间减半(比如减少 new
s),您将节省 50% 的一半,即总体上节省 25%,加速 100/75 = 1.33 = 33%
您甚至可以查看回调代码中的哪些行占用了大部分时间。
【讨论】:
【参考方案2】:选择开源应用,在调试模式下从源代码编译它们,然后分析结果。
【讨论】:
以上是关于如何配置 3rd-party 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何隔离仅允许创建为单例的不良行为 3rd-party c-lib?
如何处理使用 3rd-party 的 restful store api 和 js mvc 框架的安全性?
将 3rd-party Javascript 库包含到 AngularJS 应用程序中