4

我尝试使用 Instruments 来检测内存问题。我使用以下指南向我展示了如何设置 Xamarin->Instruments,http: //docs.xamarin.com/guides/ios/deployment,_testing,_and_metrics/instruments_walkthrough/

但是,我看到 Instruments 在 Xcode5 中发生了一些变化,这并不重要,但一些按钮名称等已经改变了名称。无论如何,我的问题是,在运行 Instruments 时,在 Instruments 的调用堆栈中选择一个条目时,我没有得到“单码”(在上面指南的第 14 步中提到)。有时我只得到应用程序中调用的汇编程序/十六进制(?)引用(可能是因为仪器无法匹配 dsym 文件),而且大多数时候我只在调用堆栈中获取名称:“native_to_managed_trampoline_ _ ”,其中显示了一些 obj-c 混淆代码。

那么,到底如何才能在仪器中分析我的应用程序,查看正确的调用堆栈,当我单击调用堆栈条目时,查看有问题的 c# 代码(就像在指南中一样)?

4

1 回答 1

7

需要检查的几件事:

  • 设备上的配置文件,而不是模拟器。在设备上,您应该获得托管帧的符号,而在模拟器中则不会(这是因为在模拟器中代码是 jitted 的,并且从内存地址转换为方法名称的信息仅存在于进程的内存中)。

  • 确保应用程序名称 (foo.app) 与您的可执行文件名称 (foo.exe) 相同,否则符号化可能无法正常工作。您可以在项目的构建/输出选项(“程序集名称”字段)中检查/修改可执行文件名称。

  • 不要重建您的应用程序,然后分析早期的构建。重建将覆盖 dSYM 目录,并使其与任何以前的构建不兼容。

  • 如果您正在分析发布版本,请确保 C# 编译器发出调试信息(在项目的构建/编译器选项中,将“调试信息”设置为“完整”)。这不会以任何方式影响最终的应用程序,它只会使 dSYM 目录包含更多调试信息(文件名/行号),因此在您的版本中保留此选项也是安全的。

于 2013-10-29T12:53:21.590 回答