记一次字符乱码bug解决过程

本文记录了一次解决字符乱码问题的过程,涉及多模块定位、远程调试和代码库问题排查。通过windbg远程调试确定问题出在assemble.dll组装阶段,由于UTF-8与宽字符转换不当导致。最后建议在遇到类似问题时,应勇于质疑并直接进行调试。
摘要由CSDN通过智能技术生成

前言

最近被分配了一个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(•́へ•́╬)

二、定位到模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值