使用LLDB's Python API通过断点将NSData数据写入文件

iOS有一类单测用来验证对网络返回的NSData类型的数据解析是否正确,此时需要传入NSData类型的对象。

获取数据的方法有两种:
1.单测中发起网络请求,用真实返回的数据进行验证
2.在源码中添加write语句将数据保存到文件中,然后单测里读取data文件

这两种方法的问题都很明显:
第一种增加了单测的时长,单测书写的复杂性也会增加
第二种对源码有侵入性,使用完成后还需要删除临时添加的代码

本文介绍一种通过使用Xcode断点来保存NSData类型数据的方法。

具体方法
1.克隆代码

git clone http://github.com/liyanage/lldb_utilities/ ~/git/lldb_utilities

2.在用户目录下创建.lldbinit

ln -s ~/git/lldb_utilities/lldbinit ~/.lldbinit

3.重启Xcode
4.在需要保存的NSData类型对象的后面添加断点使用LLDB's Python API通过断点将NSData数据写入文件_第1张图片
按照下图编辑断点
使用LLDB's Python API通过断点将NSData数据写入文件_第2张图片
dump_nsdata: 使用LLDB’s Python API自定义的命令
data: 源码中NSData类型的变量
Automatically continue after evalutating actions: 勾选后,执行到断点处不会暂停程序的运行。
5.运行程序,程序执行到断点处,NSData数据会保存在NSTemporaryDirectory()/tmp/nsdata-xxxxxxxx.dat

注:此方法适用于模拟器,不适用于真机

参考:
liyanage/lldb_utilities
用Python玩转LLDB

你可能感兴趣的:(iOS)