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