前言
最近被分配了一个bug:解决上报数据中文乱码问题。d⊂(ο・㉨・ο)⊃又是字符乱码问题。
大概背景是:该数据是在produce.dll中通过assemble.dll组装,调用upload.dll上传的
如何在多个模块中定位是哪个环节出的问题,这是比较恶心和比较棘手的问题~
解决过程
一、首先解决如何在多个模块中定位哪个环节出的问题
1)通过日志定位问题。本来是想通过看日志定位问题的,但是日志显示的没有乱码,然而抓的包以utf-8显示时,发现就乱码了,所以通过日志定位不可行。
2)通过调试定位问题。不能看日志,那就只能上手调啦~由于复现环境不是本机,是远程机器,那只能远程调试,我会的远程调试只有俩:visual studio远程调试和windbg远程调试。由于远程机器环境是windows server,所以visual studio似乎attach不上去,我就放弃它,选择windbg远程调试了。
windbg远程调试不是很麻烦,只要把对应模块的pbd和代码拷贝到远程机器,然后就attach对应进程,下断点(可通过bp命令或打开代码下断点),触发产生中文乱码现象,这时就会走到断点,然后逐步调试即可。
通过调试,发现是assemble.dll组装时乱码了,导致上传乱码了,坑啊!assemble.dll模块该部分逻辑已经用很久了,一开始就没想过会是这里问题...还是别太相信前人...d(•́へ•́╬)
二、定位到模块