诊断DLL依赖加载问题的工具
项目描述
DLL诊断工具
命令行工具dlldiag
提供了识别应用程序或库的DLL依赖关系并诊断依赖加载问题的功能。它主要用于在将现有应用程序迁移到Windows容器时使用,在这些容器中,传统的基于GUI的工具不可用。识别应用程序所需的最小依赖集,便于将所需的DLL文件从mcr.microsoft.com/windows基本镜像复制到mcr.microsoft.com/windows/servercore基本镜像,从而在保持最小可能的镜像大小的同时,最大化应用程序的兼容性。
内容
要求和安装
dll-diagnostics
Python包需要以下条件
- Python 3.5或更高版本
- Windows Server 2016或更高版本,或Windows 10版本1607或更高版本
- Microsoft Visual C++ Redistributable for Visual Studio 2015-2019
- Windows 10调试工具 (WinDbg)(仅用于运行
dlldiag trace
命令)
您可以通过运行以下命令来安装包
pip install dll-diagnostics
如果您不需要在宿主系统上使用该软件包,则可以从Docker Hub下载预构建的容器镜像,以在Windows容器中开始使用dlldiag
命令。
使用方法
dlldiag
命令行工具提供了以下子命令
-
dlldiag deps
:此子命令列出模块(DLL/EXE)的直接依赖项并检查是否可以加载。还列出延迟加载的依赖项,但不包括间接依赖项(即依赖项的依赖项)。 -
dlldiag docker
:此子命令生成一个适用于在Windows容器中使用dlldiag
命令的Dockerfile,允许用户在Dockerfile的FROM
语句中可选地指定要使用的基镜像。当您想扩展您选择的现有镜像而不是简单地扩展Docker Hub中提供的预构建镜像时,这非常有用。 -
dlldiag graph
:此子命令通过注入使用Detours的DLL来运行可执行模块,以测量对LoadLibrary()的调用,从而重建调用层次结构。当您想查看可执行模块的直接依赖项正在加载哪些间接依赖项,或想识别在运行时程序化加载的依赖项时,这非常有用。 -
dlldiag trace
:此子命令使用Windows调试器跟踪模块(DLL/EXE)的LoadLibrary()调用并提供详细的结果报告。此跟踪利用Windows内核的loader snaps功能以获得细粒度信息,如Junfeng Zhang的博客文章“调试LoadLibrary失败”中所述。此跟踪捕获有关间接依赖项和延迟加载的依赖项的信息。
法律
版权所有 © 2019-2021,Adam Rehn。在LICENSE文件中提供MIT许可的详细信息。
此软件包的二进制分发包括部分以对象形式存在的Detours。Detours版权所有(c)Microsoft公司,并且在MIT许可下发布。
项目详情
下载文件
下载适合您平台文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。