![94c4cd994d93bf0e3bc32a6e9ebd6b03.png](https://i-blog.csdnimg.cn/blog_migrate/5636634eff54f76183142e198d07d87d.jpeg)
作为工程师,检测应用是否有收发包常见的方法就是抓包。linux平台下可以通过tcpdump命令进行抓包,windows 和Mac 平台也有Wireshark工具,对于终端如何进行抓包与日志分析。
终端抓包方法
苹果的生态很封闭,但开发工具很完美。将手机与Mac相连后,通过xcode就可以查看手机设备信息,获取到设备的udid 信息。
![ed85d852355cacd25b68375fec8351dc.png](https://i-blog.csdnimg.cn/blog_migrate/7459a5c456743467a7c0a456dd50fbd5.jpeg)
在通过命令 rvictl 创建一张虚拟网卡,此后手机的数据就会通过这个虚拟网卡进行收发。
![ee81331b824907cb0a49ab6e38bd4afb.png](https://i-blog.csdnimg.cn/blog_migrate/2040c87bf55818086719523fcbf81f60.jpeg)
rvictl -s 设备udid
在 Mac电脑上,打开wireshark 软件就可以看到这张虚拟的网卡,选中这张虚拟的网卡,开始抓手机上的数据包进行分析。
Android 平台想要直接抓包,需要把手机root之后才能执行tcpdump 命令,难度较大。在日常开发中,我通常会在路由器上直接执行tcpdump命令抓包,再根据ip地址过滤出手机收到的数据包。
终端抓取日志方法iOS 应用经常使用NSlog 输出日志,这个函数将日志输出输出流。在xcode控制台可以过滤日志内容,如果日志量很大还继续使用xcode查看日志,会导致xcode卡死。推荐一个工具 idevicesyslog (可以直接百度搜索相关安装教程)。
![8d7f9b92259d4e40e0f7b185871840b8.png](https://i-blog.csdnimg.cn/blog_migrate/92823836a3262240ccb0bcca30a7a6d3.png)
idevicesyslog > phone.txt
Android应用一般采用logcat 输出日志,和iOS类似,在Android studio上也可以搜索、过滤日志。我通常会直接用adb 命令把手机的日志抓出来。
adb logcat -v time > phone.txt
上面这条命令可以将手机上的日志重定向到 phone.txt 里面,再结合linux 命令 grep、awk 、tail 就可以对日志进行搜索。
获取更多文章更新。