最近我们遇到了一个棘手的问题:当我们的设备连接到另一个设备B后,运行一段时间后出现了声音异常的情况。而且,这个设备B已经长时间运行,采用了英伟达芯片,应该是相当可靠和稳定的。因此,我们需要对我们的设备进行分析,以了解情况。
面对这种情况,我不禁怀疑起自己的能力,也许是我们设备的问题。
我们的设备A通过usb把数据传给B设备,然后B设备经过各种处理后再把设备传出去。
然后测试一段时间后发现,B设备传出去的数据有异常。
我先是在A设备上dump了我们的数据,发现我们发送出去的数据是正常的。
那就有可能是在B处理的时候出现问题,或者是在usb传输的时候出问题了。
PS:
我之前曾遇到一个问题,我们的设备通过USB连接一个MTK的芯片,应用层dump出来的数据是正确的,然后对端收到的数据是异常的,之后我们就用了USB抓包工具抓了传输的数据包,发现传输的USB数据丢失,之后再反过来看我们的内核代码,发现内核usb部分的平台驱动有bug。
——这次的情况差不多
我们使用了下面这个USB抓包工具,这个比较贵哈,但是用起来是真的超级爽。
软件使用,USB 480 软件,刚开始可能有点不习惯,用起来之后,发现跟傻瓜式软件一样。
它的接发也非常友好,比如A和B通信,它可以在中间加一个监听的部分,同是又不影响A和B之间通信。
——然后,就是复现了
第一天到现场的时候,因为对方给的USB线很长,十几米吧,一接上调试器,整个设备都用不了,也没办法复现问题,然后对方的工程师就不断在配置参数,配置参数后让我们继续复测,弄到了凌晨2点,还是没有定位到根本问题原因。
第二天继续过去,然后用了一根比较短的USB线,能正常抓包,复现了几个小时,终于是抓到了异常情况到USB数据包。
解包分析后发现我们传输过去的UAC数据是正常的
那,问题就比较明显了,需要B设备的人继续去查
——
关于dump数据音频数据,需要先设置软件,只显示data选项
然后,在File里面选择到处,之后就是选择bin文件保存就好了
之后就是使用Audacity导入音频就可以了
磨刀不误砍柴工,调试工具对于排查问题非常有帮助,同样,日志对于软件工程师的帮助也是非常大。
不过这个USB抓包工具是有点小贵,大家可以推荐下自己用的工具。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !