Xamarin.ios 仪表中显示的单触符号

Xamarin.ios 仪表中显示的单触符号,xamarin.ios,Xamarin.ios,这里是monotouch和“原生”iPhone开发的新手。我正在尝试调试一些内存泄漏,但在调试时遇到了问题。我的应用程序很重,我肯定会泄露它们,但很难找到它们的位置 试着用仪器来找到位置,但看起来我看不到符号,只看到原始地址。你知道如何让仪器看到正确的调用堆栈吗?在我看来,由于monotouch不进行JIT编译,monotouch应该能够为它生成的代码生成符号 仪器中的调用堆栈示例: 0 libSystem.B.dylib calloc 1 libobjc.A.dylib _inte

这里是monotouch和“原生”iPhone开发的新手。我正在尝试调试一些内存泄漏,但在调试时遇到了问题。我的应用程序很重,我肯定会泄露它们,但很难找到它们的位置

试着用仪器来找到位置,但看起来我看不到符号,只看到原始地址。你知道如何让仪器看到正确的调用堆栈吗?在我看来,由于monotouch不进行JIT编译,monotouch应该能够为它生成的代码生成符号

仪器中的调用堆栈示例:

   0 libSystem.B.dylib calloc
   1 libobjc.A.dylib _internal_class_createInstanceFromZone
   2 libobjc.A.dylib class_createInstance
   3 CoreFoundation +[NSObject(NSObject) allocWithZone:]
   4 CoreFoundation +[NSObject(NSObject) alloc]
   5 UIKit GetPartImages
   6 UIKit -[UITextFieldRoundedRectBackgroundView _updateImages]
   7 UIKit -[UITextFieldBackgroundView initWithFrame:active:]
   8 UIKit -[UITextField setBorderStyle:]
   9  0xdf40ced
  10  0xdf41846
  11  0xdf40f0e
  12  0xdf3fc75
  13  0x88b2051
  14 iPhone mono_jit_runtime_invoke
  15 iPhone mono_runtime_invoke
  16 iPhone mono_runtime_invoke_array
  17 iPhone ves_icall_InternalInvoke
  18  0xcfc5d93
  19  0xcfc57c5
  20  0xcfc5648
  21  0xcfc9083
  22  0xcfc8f2d
  23  0xcfc8d93
  24  0xdcb02c1
  25  0xdcb025b
  26  0xdcb0034

您是在手机还是sim卡上评测?谢谢@Geoff。错过了你在这里回答的事实。这似乎不会触发通知。是的,我正在尝试sim卡,因为某些原因instruments找不到我的应用程序!?!。无论如何,在进一步挖掘之后,我们了解到仪器需要dSYM符号文件。我想不出为模拟器生成它们的方法,但结果是它们是为设备二进制文件生成的,所以我花了更多的时间尝试让仪器与我的应用程序一起工作。一旦它做到了,我就能够看到好的调用堆栈。然而,有一个问题是,为什么不为模拟器生成Dsym?我们在sym上进行JIT,Dsym是在编译时生成的。这是有道理的。出于好奇,为什么要对模拟器JIT和compile做一些不同的事情呢?模拟器和设备已经有了很大的不同,对每个模拟器运行进行完整的aot将极大地增加编辑/编译/运行周期时间。您是在设备上还是在sim上评测?谢谢@Geoff。错过了你在这里回答的事实。这似乎不会触发通知。是的,我正在尝试sim卡,因为某些原因instruments找不到我的应用程序!?!。无论如何,在进一步挖掘之后,我们了解到仪器需要dSYM符号文件。我想不出为模拟器生成它们的方法,但结果是它们是为设备二进制文件生成的,所以我花了更多的时间尝试让仪器与我的应用程序一起工作。一旦它做到了,我就能够看到好的调用堆栈。然而,有一个问题是,为什么不为模拟器生成Dsym?我们在sym上进行JIT,Dsym是在编译时生成的。这是有道理的。出于好奇,为什么要对模拟器JIT和compile做一些不同的事情呢?模拟器和设备已经大不相同了,对每个模拟器运行进行完整的aot将极大地增加编辑/编译/运行周期时间。