如何配置 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% 的时间(大约)。 因此,如果您可以将时间减半(比如减少 news),您将节省 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 应用程序中

将 3rd-party C++ DLL 引用到 VS 2013 项目中

如何在应用程序中正确更新 GCM 注册 ID

iOS 配置:如何丢弃不需要的应用程序 ID 和配置文件?