使用PE信息查看工具和Beyond Compare文件比较工具排查dll库文件版本不对的问题

目录

1、问题说明

2、修改了代码,但安装版本还是有问题

3、使用PE信息查看工具查看音视频库文件(二进制)的时间戳

4、使用Beyond Compare比较两个库文件的差异

5、找到原因

6、最后


C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/125529931基础与进阶(专栏文章,持续更新中...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/category_11931267.htmlC/C++VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/124272585C++软件分析工具从入门到精通案例集锦(专栏文章,持续更新中...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/131405795开源组件及数据库技术(专栏文章,持续更新中...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/category_12458859.html网络编程与网络问题分享(专栏文章,持续更新中...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/category_2276111.html       最近在项目中使用了PE信息查看工具和Beyond Compare文件比较工具排查了一个dll库文件版本不对的问题,正好借此案例,给大家介绍一下这两个小工具的使用。

1、问题说明

       某天测试人员在一台Win7电脑上测试客户端软件时,发现软件在SIP协议下入会后看不到视频,于是找到音视频模块的同事来排查。通过查看打印得知,是在使用D3D绘制视频图像时绘图接口返回失败,所以视频图像没有绘制上去。于是修改了一下代码,在D3D绘图失败时,自动切换到其他模式。

2、修改了代码,但安装版本还是有问题

       维护音视频模块的小伙,修改了一下代码,本地临时编译了一个Release版本的dll库,发给测试同事,让其验证一下还有没有问题。如果没问题,就走发布流程,提交代码然后编译代码,然后将生成的.lib和.dll发布到产品代码流上来。

       测试同事用临时库验证了一下,入会后可以看视频了,所以修改的代码是有效的。音视频模块的同事提交代码,并发起编译让编译机编译版本,编译完成后将库发布过来。然后我们这边再编译代码,重新打程序的安装包,然后让测试同事安装新的安装包程序。测试同事安装新的安装包后,发现入会后还是看不到视频,还是有问题。


       在这里,给大家重点推荐一下我的几个热门畅销专栏:

专栏1:(该专栏订阅量接近350个,有很强的实战参考价值,广受好评!专栏文章持续更新中,预计更新到200篇以上!)

C++软件调试与异常排查从入门到精通系列文章汇总icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/125529931

本专栏根据近几年C++软件异常排查的项目实践,系统地总结了引发C++软件异常的常见原因以及排查C++软件异常的常用思路与方法,详细讲述了C++软件的调试方法与手段,以图文并茂的方式给出具体的实战问题分析实例,带领大家逐步掌握C++软件调试与异常排查的相关技术,适合基础进阶和想做技术提升的相关C++开发人员!

专栏中的文章均是通过项目实战总结出来的(通过项目实战积累了大量的异常排查素材和案例),有很强的实战参考价值!专栏文章还在持续更新中,预计文章篇数能更新到200篇以上!

专栏2: 

C/C++基础与进阶(专栏文章,持续更新中...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/category_11931267.html

以多年的开发实战为基础,总结并讲解一些的C/C++基础与进阶内容,以图文并茂的方式对相关知识点进行详细地展开与阐述!专栏涉及了C/C++领域的多个方面的内容,同时给出C/C++及网络方面的常见笔试面试题,并详细讲述Visual Studio常用调试手段与技巧!

专栏3: 

开源组件及数据库技术icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/category_12458859.html

以多年的开发实战为基础,分享一些开源组件及数据库技术! 


3、使用PE信息查看工具查看音视频库文件(二进制)的时间戳

       难道发布的库的版本有问题?于是先用PE工具打开mediasdk.dll二进制文件,查看二进制文件的时间戳(编译生成时间),如下所示:

文件的修改时间为:2023/12/08 13:26:52,确实就是这个时间点编译的,所以从二进制文件的编译生成时间上看是没问题的。

注意,不能把电脑中文件的修改时间当成二进制文件的生成时间,文件修改时间仅仅表示在本机器上操作的时间,应该使用专用的PE信息查看工具去查看文件生成时的时间戳。

       这个地方说一下PE查看工具PeViewerMiTeC EXE Explorer

我这边之前使用的PE信息查看工具叫PeViewer,以前排查问题时,用该工具打开64位二进制文件发生了闪退。后来在网上搜到了MiTeC EXE Explorer工具,这个工具兼容性比较好,打开64位二进制文件没有问题。

4、使用Beyond Compare比较两个库文件的差异

       既然时间对的上,为啥之前验证时没问题,使用新版本的安装包安装后的软件还有问题呢?于是让测试同事使用Beyond Compare软件比较一下音视频开发同事给的mediasdk.dll和新版本安装目录中的mediasdk.dll文件,看看二者有没有区别。

       对于Beyond Compare,默认是Text Compare模式,需要切换到Hex Compare二进制比较模式。具体切换入口为:

在菜单栏中点击Session,然后在弹出的菜单中点击Compare in New View Using,然后在弹出的子菜单中点击Hex Compare,这样就切换到二进制内容比较模式了,如下所示:

       比较了一下两个mediasdk.dll文件,确实有很多不同的地方:

但最近两天没修改该模块的代码,两个应该不会有差异的,所以还是mediasdk.dll库的版本不对。

5、找到原因

       目前处理这个问题的音视频开发同事是刚毕业没多久的新人,可能相关代码环境还是不熟悉,是不是只修改了每日流,没有修改封闭流?我们当前产品就要发布了,使用的是音视频模块的封闭流版本,很有可能是没修改封闭流导致的。于是亲自到这个新同事的机器上看了一下,确实是只修改了每日流,没修改封闭流的代码。修改一下,重新发布就可以了。

6、最后

       本文通过项目中遇到的库文件版本问题,介绍了PE信息查看工具PeViewer和MiTeC EXE Explorer,以及文件比较工具Beyond Compare。这些小工具虽然比较小,但在日常工作中还是挺有用的,所以在这里给大家分享一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/622855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 文本处理库之chardet使用详解

概要 当处理文本数据时,经常会遇到各种不同的字符编码。这可能导致乱码和其他问题,因此需要一种方法来准确识别文本的编码。Python中的chardet库就是为了解决这个问题而设计的,它可以自动检测文本数据的字符编码。本文将深入探讨chardet库的…

浏览器缓存

浏览器缓存是指用户在访问web页面时,将一些静态资源(js,css,图片)缓存到本地硬盘(大:1T)或内存(8G,16G)中,当下次访问页面时,不用向服务端发送请求请求资源,直接从本地加载资源,可以提高用户体验 分类:强缓存和协商缓存 一、强缓存:是指用户第一次请求资源成功后,会将响应头字…

研究领域知名课题组调研

Visual SLAM: reference: [connect paper]{https://www.connectedpapers.com/}https://zhuanlan.zhihu.com/p/130530891 德国慕尼黑工业大学计算机视觉组 研究方向:三维重建、机器人视觉、深度学习、视觉 SLAM 等 实验室主页:https://vision…

MySQL如何存储表情符号?

存储表情符号 默认mysql的字符集是utf8,排序规则为 utf8_general_ci INSERT INTO department (name) VALUES (😄) 在存储表情的时候会报 1366 - Incorrect string value: \xF0\x9F\x98\x84 for column name at row 1, Time: 0.007000s 这时需要修改字符集…

Socket.D v2.3 发布(打通前端与后端)

基于事件和语义消息流的网络应用层协议。 有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。 主要特性 基于事件,每个消息都可事件路由所谓语义,通过元信息进行语义描述流关…

git 的安装

git 的安装 在我们开始使用 Git 前,需要将它安装在我们的电脑上。即便已经安装,最好将它升级到最新的版本。 我们可以通过软件包或者其它安装程序来安装,或者下载源码编译安装。 本文只介绍通过在 windows 上安装软件包的方式,其…

大模型实战05——LMDeploy大模型量化部署实践

大模型实战05——LMDeploy大模型量化部署实践 1、大模型部署背景 2、LMDeploy简介 3、动手实践环节——安装、部署、量化 注 笔记内容均为截图 笔记课程视频地址:https://www.bilibili.com/video/BV1iW4y1A77P/?spm_id_from333.788&vd_source2882acf8c823ce…

NLP论文阅读记录 - 2022 | WOS 一种新颖的优化的与语言无关的文本摘要技术

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.前提三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 A Novel Optimized Language-Independent Text Summarization Techni…

TCP服务器和客户端的创建步骤

TCP服务器的实现流程:一、创建套接字(socket函数):通信域选择IPV4网络协议、套接字类型选择流式; int sockfd socket(AF_INET,SOCK_STREAM,0); //通信域选择IPV4、套接字类型选择流式二、填充服务器的网络信息结构体&…

青动CRM-E售后 售后工单CRM系统 erp系统 带前端小程序全开源可二开

应用介绍 一款基于FastAdminThinkPHP和uniapp开发的CRM售后管理系统,旨在助力企业销售售后全流程精细化、数字化管理,主要功能:客户、合同、工单、任务、报价、产品、库存、出纳、收费,适用于:服装鞋帽、化妆品、机械机…

操作系统复习 七、八章

操作系统复习 七、八章 文章目录 操作系统复习 七、八章第七章 内存管理内存管理的基本要求和原理覆盖与交换连续分配管理方式非连续分配管理方式基本分段存储管理方式段页式管理方式补充 第八章 虚拟内存虚拟内存的基本概念请求分页管理方式易混知识点页面置换算法页面分配策略…

Apollo之原理和使用讲解

文章目录 1 Apollo1.1 简介1.1.1 背景1.1.2 简介1.1.3 特点 1.2 基础模型1.3 Apollo 四个维度1.3.1 application1.3.2 environment1.3.3 cluster1.3.4 namespace 1.4 本地缓存1.5 客户端设计1.5.1 客服端拉取原理1.5.2 配置更新推送实现 1.6 总体设计1.7 可用性考虑 2 操作使用…

程序猿的产品思考:2C与2B产品思维的区别

原创/朱季谦 我最早接触到互联网产品的时候,听到最多的,是做产品要有用户思维,即站在用户角度去看待产品。这个先入为主的概念,在很长一段时间里,都被我效作经典。然而也在很长一段时间里,我竟混淆了其中的…

Flink-SQL——动态表 (Dynamic Table)

动态表 (Dynamic Table) 文章目录 动态表 (Dynamic Table)DataStream 上的关系查询动态表 & 连续查询(Continuous Query)在流上定义表连续查询更新和追加查询查询限制 表到流的转换总结 SQL 和关系代数在设计时并未考虑流数据。因此,在关系代数(和 SQL)之间几乎…

ubuntu18.04 TensorRT 部署 yolov5-7.0推理

文章目录 1、环境配置2、推理部分2.1、检测2.2、分类2.3、分割2.4、INT8 量化 1、环境配置 链接: TensorRT cuda环境安装 2、推理部分 下载yolov5对应版本的包 https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5 2.1、检测 1、源码模型下载 git clone -b v7.0 …

您的计算机已被[datastore@cyberfear.com].mkp勒索病毒感染?恢复您的数据的方法在这里!

导言: 在数字化时代,网络安全问题愈发严峻,而[datastorecyberfear.com].mkp [hendersoncock.li].mkp [myersairmail.cc].mkp勒索病毒正是其中一个颇具威胁的恶意软件。本章将深入剖析[datastorecyberfear.com].mkp [hendersoncock.li].mkp […

C# 导出EXCEL 和 导入

使用winfrom简单做个界面 选择导出路径 XLSX起名字 打开导出是XLSX文件 // 创建Excel应用程序对象Excel.Application excelApp new Excel.Application();excelApp.Visible false;// 创建工作簿Excel.Workbook workbook excelApp.Workbooks.Add(Type.Missing);Excel.Works…

如何优化Uniapp应用程序的性能?

优化Uniapp应用程序的性能可以从以下几个方面进行优化: 减少页面加载时间:避免页面过多和过大的组件,减少不必要的资源加载。可以使用懒加载的方式,根据用户的实际需求来加载页面和组件。 节流和防抖:对于频繁触发事件…

F-score 和 Dice Loss 原理及代码

文章目录 1. F-score1. 1 原理1. 2 代码2. Dice Loss2.1 原理2.2 代码 通过看开源图像语义分割库的源码,发现它对 Dice Loss 的实现方式,是直接调用 F-score 函数,换言之,Dice Loss 是 F-score的特殊情况。于是就研究了一下这背后…

训练FastestDet(Anchor-Free、参数量仅0.24M),稍改代码使得符合YOLO数据集排布

文章目录 0 参考链接1 准备数据1.1 使用以下代码生成绝对路径的txt文件1.2 在config文件夹下新建一个xxx.names文件 2 配置训练参数3 稍改代码使得符合YOLO数据集排布4 开始训练 0 参考链接 官方的代码:FastestDet 1 准备数据 我已有的数据集排布:&am…