我想将记录添加到我们的单元测试中,这些测试记录了他们使用的DLL以及它们的加载位置.
我可以从Sysinternals ListDLL获取我需要的信息,但是我需要在测试过程运行时运行它,并且我最终会遇到竞争条件:例如,ListDLLs可能运行得太早,并且错过了一个DLL在测试运行中途加载;在测试过程退出后,或者ListDLL可能运行得太晚.
同样,我可以从Visual Studio调试器的输出和模块窗口中获取所需的信息,但我想在构建服务器上自动执行此操作.
是否有任何命令行工具可以运行任意EXE,跟踪它使用的DLL,并将信息记录到文件?
解决方法
您可以编写自己的工具,它将使用“调试”功能.这个工具必须
>暂停新流程
>将创建的进程作为调试器附加
>处理调试事件,我记得你需要LOAD_DLL_DEBUG_EVENT
http://msdn.microsoft.com/en-us/library/windows/desktop/ms679302(v=vs.85).aspx