首页 > 解决方案 > 使用命令行在 Xamarin 分析中触发快照

问题描述

我使用以下技术从 android 设备为我的应用程序获取堆快照。

  1. 启用 heapshot 日志记录:

    adb shell setprop debug.mono.profile 日志:堆

  2. 启动您的应用程序。(如果您的应用程序在 (1) 之前已经运行,请终止并重新启动它。)

  3. 使用您的应用程序。

  4. 获取应用的配置文件数据:

    adb 拉 /data/data/@PACKAGE_NAME@/files/。override /profile.mlpd @PACKAGE_NAME@ 是您的应用程序的包名,例如,如果您的包是 FooBar.FooBar-Signed.apk,那么 @PACKAGE_NAME@ 将是 FooBar.FooBar。

当我在 Xamarin 分析器中打开生成的 mlpd 文件时,它会显示所有分配,但不显示任何快照/实时对象。

如何通过命令行触发快照?是否有任何 adb 命令或任何可能用于特定快照?因为我正在自动化所有场景。

标签: xamarin.androidadb

解决方案


非常旧的帖子,但仍将答案发布为可能会帮助有需要的人: 使用以下命令:

  1. 首先设置属性

    adb shell setprop debug.mono.profile log:alloc,maxframes=2,heapshot=10000ms

  2. 重新启动应用程序并在操作/测试用例之后使用以下命令提取文件

    adb shell 拉 /data/data/@PACKAGE_NAME@/files/。覆盖/profile.mlpd profile1.mlpd

  3. 分析完成后强制停止应用程序以停止分析

    adb shell 是强制停止 @PACKAGE_NAME@

有关更多信息,请参阅链接: https ://www.mono-project.com/docs/debug+profile/profile/profiler/


推荐阅读