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

news2024/11/24 15:06:23

目录

1、问题说明

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

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

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

5、找到原因

6、最后


C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/125529931C/C++基础与进阶(专栏文章,持续更新中...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/category_11931267.htmlVC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)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.coloradmin.cn/o/1327623.html

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

相关文章

NFS原理详解

一、NFS介绍 1)什么是NFS 它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。 NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。 在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁…

【蓝桥杯】树的重心

树的重心 图的dfs模板 int dfs(int u) {st[u]true;for(int ih[u];i!-1;ine[i]){int je[i];if(!st[j]){dfs(j);}} }树是这样的。 邻接表: 1: 4->7->2->-1 2: 5->8->1->-1 3: 9->4->-1 4: 6->3->1->-1 5: 2->-1 6: 4->-1 7…

计算机网络 运输层下 | TCP概述 可靠传输 流量控制 拥塞控制 连接管理

文章目录 3 运输层主要协议 TCP 概述3.1 TCP概述 特点3.2 TCP连接RSVP资源预留协议 4 TCP可靠传输4.1 可靠传输工作原理4.1.1 停止等待协议4.1.2 连续ARQ协议 4.2 TCP可靠通信的具体实现4.2.1 以字节为单位的滑动窗口4.2.2 超时重传时间的选择4.2.3 选择确认SACK 5 TCP的流量控…

Python---socket之send和recv原理剖析

1. 认识TCP socket的发送和接收缓冲区 当创建一个TCP socket对象的时候会有一个发送缓冲区和一个接收缓冲区,这个发送和接收缓冲区指的就是内存中的一片空间。 2. send原理剖析 send是不是直接把数据发给服务端? 不是,要想发数据,必须得…

GEE-Sentinel-2月度时间序列数据合成并导出

系列文章目录 第一章:时间序列数据合成 文章目录 系列文章目录前言时间序列数据合成总结 前言 利用每个月可获取植被指数数据取均值,合成月度平均植被指数,然后将12个月中的数据合成一个12波段的时间数据合成数据。 时间序列数据合成 代码…

嵌入式中断理解

一、概念 中断: 在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。 中断优先级&#x…

YACS(上海计算机学会竞赛平台)一星级题集——水仙花指数

题目描述 定义一个正整数的十进制表示中各位数字的立方和为它的水仙花指数,给定一个整数 n,请计算它的水仙花指数。 例如 n1234 时,水仙花指数为 输入格式 单个整数:表示 n 输出格式 单个整数:表示 n 的水仙花指…

IPC之九:使用UNIX Domain Socket进行进程间通信的实例

socket 编程是一种用于网络通信的编程方式,在 socket 的协议族中除了常用的 AF_INET、AF_RAW、AF_NETLINK等以外,还有一个专门用于 IPC 的协议族 AF_UNIX,IPC 是 Linux 编程中一个重要的概念,常用的 IPC 方式有管道、消息队列、共…

深入探讨开源对话系统:IntelliQ的世界

在人工智能的快速发展时代,开源项目成为了推动技术革新的重要力量。最近,我注意到了一个特别有趣的项目——IntelliQ。这个项目旨在利用大型语言模型(LLM)构建一个多轮问答系统,不仅具备强大的意图识别和词槽填充&…

【Unity】【WebRTC】如何用Unity而不是浏览器接收远程画面

【背景】 之前几篇我们讨论了如何设置信令服务器,如何发送画面给远端以及如何用浏览器查看同步画面,今天来讨论如何实现Unity内部接收画面。 看本篇之前请先看过之前将web服务器设置和基本远程画面功能的几篇博文。(同专栏下查看&#xff09…

使用VSC从零开始Vue.js——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务3:数据可视化

使用Visual Studio Code(VSC)进行Vue开发非常方便,下面是一些基本步骤: 一、下载和安装Vue 官网下载地址Download | Node.js Vue.js是基于Node.js的,所以首先需要安装Node.js,官网下载地址:No…

PMP项目管理 - 范围管理

系列文章目录 系统架构设计 PMP项目管理 - 整合管理 PMP项目管理 - 质量管理 PMP项目管理 - 采购管理 PMP项目管理 - 资源管理 PMP项目管理 - 风险管理 PMP项目管理 - 沟通管理 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is …

快速搭建Grafana Promethus 服务器监控系统

该文参考文章,其中又遇到一些问题,并解决,当前主要为了记录一下 探针 Grafana Prometheus 之比 Docker 更简单的部署流程 - 承飞之咎本文重在 Grafana Prometheus 探针 方案的部署流程,介绍和更多使用请到:探针 ̵……

【12.20】转行小白历险记 登录+注册页

一、登录注册页面逻辑 写样式布局:垂直居中、编程式路由、调后端接口正则表达式验证用户输入的密码规则校验通过后,跳转页面js兜底校验调后端接口将token值存储到vuex中,实现持久化存储 vuex不是持久化存储的,如果需要持久化存储…

当下流行的直播技术demo演示

nginx-http-flv-module(更新不是很频繁) SRS: https://ossrs.net/lts/zh-cn/(独立官网,目前最新稳定版version5) 基于SRS搭建直播demo演示: 一、搭建流媒体服务器 参见官网:https://ossrs.ne…

Windows 如何在局域网中建立NTP服务器实现时间同步(设置一台设备作为主机,其他设备作为从机来同步时间)

首先简单了解一下什么是NTP 网络时间协议(NTP)是一种用于同步计算机网络上各设备时间的协议。NTP时间同步在许多项目和应用中都是关键的,特别是那些对时间同步精度有要求的场景。比如需要使用NTP时间同步的情况有:金融交易系统、科学研究实验、工业自动…

ROS笔记之rosbag的快速切片(C++实现)

ROS笔记之rosbag的快速切片(C实现) —— 杭州 2023-12-21 夜 code review 文章目录 ROS笔记之rosbag的快速切片(C实现)1.运行效果2.文件结构3.fast_rosbag_slice.cpp4.CMakeLists.txt5.package.xml6.对fast_rosbag_slice.cpp进行函数封装 正常该功能是ROS官方命令行&#xff1a…

pycharm下执行conda命令提示无法识别解决方案

1 问题描述 win10环境命令行执行conda命令,报命令无法识别,错误信息如下: PS D:\code\cv> conda activate pt conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径&a…

伽马校正:FPGA

参考资料: Tone Mapping 与 Gamma Correction - 知乎 (zhihu.com) Book_VIP: 《基于MATLAB与FPGA的图像处理教程》此书是业内第一本基于MATLAB与FPGA的图像处理教程,第一本真正结合理论及算法加速方案,在Matlab验证,以及在FPGA上…

106 uni-app 小程序之巨坑 not found path,not found methods v-for渲染出现报错

1.Component is not found in path 你是否像我一样,检查了无数遍,引入路径检查千万遍,就是没写错,小程序后台就是给你报错, 不用慌,心里默念:我不能砸电脑,我不能砸电脑&#xff0…