Xamarin.IOS和Instruments分析问题

tsk*_*bru 3 instruments xamarin.ios ios xamarin

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

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

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

Rol*_*nge 6

要检查的一些事项:

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

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

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

  • 如果要分析Release版本,请确保C#编译器发出调试信息(在项目的Build/Compiler选项中,将'Debug information'设置为'Full').这不会以任何方式影响最终应用程序,它只会使dSYM目录包含更多调试信息(文件名/行号),因此也可以为您的版本保留此选项.