美文网首页iOS Developer.NETiOS精选
如何用instrument对Xamarin.iOS进行代码级调优

如何用instrument对Xamarin.iOS进行代码级调优

作者: 临岁之寒 | 来源:发表于2018-07-15 23:32 被阅读39次

    此前我写了一篇如何使用Instrument对Xamarin.iOS应用进行调优,但里面仅仅介绍了如何加载Xamarin.iOS程序,在实际的调试中还是不够用的,有时候为了有的放矢,我们需要深入到代码一级才知道程序出现问题的根源,今天我给大家介绍一下如何用instrument对Xamarin.iOS进行代码级调优。

    要实现对Xamarin.iOS进行代码级调优的基础是:导入被调优程序的dSYM文件。

    用Xamarin.iOS开发iOS程序还是与Xcode有所不同,加上我开发的输入法是extension扩展程序,与平常的程序又有所不同,所以此前我一直不知道Xamarin.iOS的dSYM文件在什么位置,以致于一些内存泄漏问题一直无法予以解决。直到最近才查阅了一些资料,才恍然大悟。

    下面我给大家介绍一下,载入dSYM文件的步骤。

    先介绍调试主程序的情况:
    首先我们根据调优需要在instrument里加载程序,这一步具体请看如何使用Instrument对Xamarin.iOS应用进行调优,这里我以岁寒输入法的主程序为例;

    加载程序之后,根据需要切换界面,触发事件,设置几个Generation,然后点左上角的终止按钮,停止运行。

    点击File,选择Symbols


    选中要调优的程序集,我这里就是SuiHanIME.iOS。


    再看BinaryPath,路径为红色,表示文件有问题,我们需要选择正确的二进制文件。

    一般我们是在debug模式下安装的程序,所以我们找最近一次编译生成的二进制文件即可,如果是真机,其路径应该是:
    .../XXX/iOS/bin/iPhone/Debug/device-builds/iphone8.4-11.4/XXX.iOS,XXX表示你的项目的名称,这里我的路径就是.../SuiHanIME/iOS/bin/iPhone/Debug/device-builds/iphone8.4-11.4/SuiHanIME.iOS

    选择正确之后,BinaryPath就不会再是红色的啦。


    然后还要选择dSYM Path,其路径一般是XXX/iOS/bin/iPhone/Debug/device-builds/iphone8.4-11.4/XXX.iOS.app.dSYM,XXX表示你的项目的名称,这里我的路径就是
    SuiHanIME/iOS/bin/iPhone/Debug/device-builds/iphone8.4-11.4/SuiHanIME.iOS.app.dSYM

    点击Done,就完成加载了。

    这个时候,当我们选一个对象的时候,才能够看到这个对象的调用栈的情况,而不再是一堆16进制的乱码。

    点击某个栈,我们可以查看具体是哪一句代码。


    如果主程序是用Xamarin.Forms实现的,由于多了一层封装,要看出我们所写的代码比较困难,而如果主程序也是Xamarin.iOS的话,我们基本上是可以找到和我们源码相对应的代码段,是的,就是原原本本的C#代码。

    以上是主程序的情况,如果像我一样,开发的是一个extension扩展程序,要对这个extension扩展程序调优应该怎么办?

    主体步骤和前面是一样,差别主要是指二进制文件的位置。

    extension扩展程序的二进制文件位置一般在.../XXX/xxx/bin/iPhone/Debug/device-builds/iphone8.4-11.4/xxx.appex,XXX表示你的项目的名称,xxx表示你extension扩展程序的名称,所以我这里的路径就是.../SuiHanIME/Keyboard/bin/iPhone/Debug/device-builds/iphone8.4-11.4/Keyboard.appex。注意,这个二进制文件是在extension扩展程序项目自己的文件夹路径中的。

    而比较坑的是,extension扩展程序的dSYM文件是和主程序的放在一起的,路径一般为.../XXX/iOS/bin/iPhone/Debug/device-builds/iphone8.4-11.4/xxx.appex.dSYM,XXX表示你的项目的名称,xxx表示你extension扩展程序的名称,所以我这里的路径就是.../SuiHanIME/iOS/bin/iPhone/Debug/device-builds/iphone8.4-11.4/Keyboard.appex.dSYM

    与前面一样,我们可以查看到调用栈

    由于extension扩展程序是Xamarin.iOS实现的,所以可以相对容易的查看到对应的C#源码。


    用instrument对Xamarin.iOS进行代码级调优就介绍到这里,感谢阅读。

    相关文章

      网友评论

        本文标题:如何用instrument对Xamarin.iOS进行代码级调优

        本文链接:https://www.haomeiwen.com/subject/qpkmpftx.html