使用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类型对象的后面添加断点在这里插入图片描述
按照下图编辑断点
在这里插入图片描述
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值