过去调试c/c++ 的socket代码,一般都只会打日志,打日志,其实这样的调试方法太慢,太低效~
本文介绍一种现在普遍在用的调试手段,落地成文,也给自己一个记录。
【工具】tcpdump、wireshark
【说明】
tcpdump用来抓tcp/udp包,可以落地成文件。见
wireshark是window下的一款网络分析工具。见
【使用小记】
step1: 完成编码,编译成二进制代码如 a.exe。
step2: 启动a.exe,假设其向 100.2.3.4的9999端口请求,则,使用:
tcpdump -i eth1 host 100.2.3.4 and port 9999 -w check.cap -s 1024
step3: 下载到windows机器,直接使用wireshark打开。举例,找到如下图内容:
选中Data(xx bytes)
下面蓝色覆盖字体即为你向对方发的包体。如调试有问题,截图给对方,很快就能定位到问题~
如0000001e为网络序的长度1e(16进制)=30(10进制),这个表示数据长度,不包含本身,所以第一图中Length=34,这样很容易定位到如:网络序设置不对,长度不对等问题。