Windows 记录进程加载的DLL
我想在单元测试中添加日志记录,记录它们使用的DLL以及从何处加载DLL 我可以从Sysinternals listdll中获得所需的信息,但我需要在测试进程运行时运行这些信息,最终会遇到竞争条件:例如,listdll可能运行得太早,并且在测试运行的中途丢失了加载的DLL;或者,在测试进程退出后,ListDLL可能运行得太晚 类似地,我可以从VisualStudio调试器的输出和模块窗口中获得所需的信息,但我希望在构建服务器上实现这一点的自动化Windows 记录进程加载的DLL,windows,dll,profiling,Windows,Dll,Profiling,我想在单元测试中添加日志记录,记录它们使用的DLL以及从何处加载DLL 我可以从Sysinternals listdll中获得所需的信息,但我需要在测试进程运行时运行这些信息,最终会遇到竞争条件:例如,listdll可能运行得太早,并且在测试运行的中途丢失了加载的DLL;或者,在测试进程退出后,ListDLL可能运行得太晚 类似地,我可以从VisualStudio调试器的输出和模块窗口中获得所需的信息,但我希望在构建服务器上实现这一点的自动化 是否有任何命令行工具可以运行任意EXE,跟踪它使用的
是否有任何命令行工具可以运行任意EXE,跟踪它使用的DLL,并将信息记录到文件中?好消息:使用迂回方式自己编写并不难。将LoadLibraryA/W函数和日志DLL名称挂接到一个文件(根据实际LoadLibrary返回的值使用GetModuleFileName)。还要钩住CreateProcess,以便可以记录子进程加载的DLL 坏消息是:我希望能够发布我使用的源代码,但这是一个我无法共享的内部工具
编辑:我不相信这个工具的迂回钩子是完全可靠的,因为在我的测试中,它丢失了一些DLL。这里有一个使用调试器API的替代工具:您可以编写自己的工具,该工具将使用“调试”功能。必须使用此工具
尝试了Tim Robinson的工具,但它似乎只跟踪与Windows相关的dll,因此在我的情况下不太有用。也许这对您有帮助:@Xearinox-谢谢,这与ListDLL类似。我想要一个命令行工具,在加载进程的DLL时跟踪它们,并在进程存在时编写报告。1。绕道不是免费的。2.我想,这个建议在静态链接库上失败了。谢谢@Maximus-我也这么想,并编写了我自己的工具来实现这一点: