打破惯性思维:聊聊一次debug
最近公司的新需求中要增加活动营销,整个组的人都被安排去研究某成熟产品的实现。我也认真地在看webService部分的实现,发现了一个诡异的10614端口的请求。
代码如下图:
这是一段服务端发请求验证登录的代码,看上去是请求本地10614端口的一个web接口。于是我开始去nginx的配置查找这个host的信息,最终也没找到。内心的想法是:什么鬼啊?
我身旁的同事也找了很久,都觉得莫名其妙的一个请求,竟然不知道接收方所在位置。
由于服务器是windows的,长期混迹于centos,ubuntu等linux server的我也感到有点生疏感。按照惯性思维都是先去查nginx或apache配置,但冷静想想应该从端口号为起点去查出对应的应用。
假设回到我们熟悉的linux环境,同样的问题转变为:
已知某端口号,求该进程是什么。
命令如下:
ps aux | grep 10614
直接就可以查到进程执行的命令。
难道大名鼎鼎(恶名昭著)的windows没有办法根据端口号查进程的吗?
bing了一下,解决方法如下:
先查出pid,然后根据pid到tasklist中查到对应进程。可见并不是一个website请求,而是去调用一个打包的exe文件做处理。
从这次debug中,我感觉人的惯性思维很强,总是脑补一些细节和证据,往往走偏路线。要理性分析,从本质上出发,实际上就是找进程罢了。同样的事情发生在各种测试中,工程师最爱说的就是:为什么本地可以啊,放到服务器上就不行了?扪心自问:自己的环境真的和服务器高度一致吗?对比过配置文件的diff?
打破惯性思维,少一点脑补。