Skip to content

Xcode调试技巧

学会在Xcode中调试app是一个非常重要的技巧,需要工具使用者能熟练掌握,可以很方便确认混淆引起的各种问题,由于混淆程序会Hook很多api,必然会引起跟原始APP逻辑不一致,某些以前不暴露的问题,在混淆中会暴露出来

注意事项

首先要调试,先确认你当前的scheme是不是 Runner(my.first.ios.com) 这种形式的,这个才是混淆工具生成的APP,切换别的scheme再编译都是不对的

入门技巧

1.使用 Exception Breakpoint,捕获 All Objective-C Exception,基本上混淆工具引起的崩溃,99%都是ObjC语言引起的,这个功能作用就是帮助你快速定位到崩溃堆栈

2.使用 Symbolic Breakpoint,捕获某些自定义的函数调用点,这个常常用来配合本地调试COSDK.framework使用(具体使用方法自行百度)

3.使用 Diagnostics,打开 Address SanitizerDetect use of stack after return 可以发现很多 c/c++ 内存异常(具体使用方法自行百度)

4.使用 Diagnostics,打开 Zombie Objects 可以发现某些因为内存泄漏引起的问题(具体使用方法自行百度)

5.使用 Diagnostics,关闭 Metal/API Validation 可以避免触发某些Unity3D应用混淆后的Debug模式出错,Release没有错误的问题

6.使用混淆工具上的启用符号调试开关(Debug模式下),能将某些符号加上 _wO_Ow_后缀,方便你能看懂混淆后产生崩溃的栈信息(Release模式不会生效)

7.使用MacSymbolicator工具,可以把Release模式版本的崩溃日志ips文件,转换出能看得懂的形式,可以通过github搜索下载(需自己编译)

高级技巧

一.如何定位Release版本崩溃信息

1.找到编译产物界面界面,打开【设备管理器】

2.找到 Open Recent Logs 按钮

3.GitHub 上下载 MacSymbolicator 这个工程,编译出APP,打开这个APP

4.找到ips文件,拖动到 MacSymbolicator 就完成了转换

Tip

如果你发现这个符号表看不懂,是因为你没有打开 dSYM 文件还原功能,怎么打开请参考下图

二.如何获取Release模式下的日志

1.找到 Open Console

2.打开下面这个界面,输入筛选条件,就能看到对应的日志

Tip

如果发现找不到输出日志,其实是因为只有NSLog函数的才会被显示出来,其他函数都被优化了