代码之家  ›  专栏  ›  技术社区  ›  RickNotFred

VisualStudio C++中DLL负载条件分析的最佳工具

  •  2
  • RickNotFred  · 技术社区  · 16 年前

    4 回复  |  直到 16 年前
        1
  •  5
  •   Jeff Wilhite    16 年前

    我不确定这是你要找的,但是 Dependency Walker 在这种情况下对我很有帮助。

        2
  •  1
  •   John D.    16 年前

    在VisualStudio调试窗口中没有得到任何输出吗?例如,当我运行调试构建时,我会得到一个DLL列表,它的加载方式如下:

    'Blah.exe': Loaded 'C:\StarTeam\Blah\Development\Blah\CODE\Debug\Blah.exe', Symbols loaded.
    'Blah.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', No symbols loaded.
    'Blah.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', No symbols loaded.
    'Blah.exe': Loaded 'C:\WINDOWS\system32\ws2_32.dll', No symbols loaded.
    'Blah.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded.
    'Blah.exe': Loaded 'C:\WINDOWS\system32\ws2help.dll', No symbols loaded.
    

    在VS2005中,启用/显示窗口的快捷方式是Alt+2。我想在VS2008中也是这样。确保窗口顶部显示其输出的“调试”消息。右键单击以确保选中所有输出,这样您就不会遗漏任何内容。

        3
  •  0
  •   Scott Stafford    16 年前

    您可以尝试在调试->中启用“异常中断”;例外情况。它可能会抛出一个可捕获的异常,如果是,请单击调试中的所有复选框->让异常在调试器上消失,而不是让异常在调试器上消失。

    我怀疑Dependency Walker会有所帮助,它会告诉您正在加载哪些DLL,但Visual Studio输出窗口也是如此,最后打印的DLL是唯一值得考虑的。

        4
  •  0
  •   John Knoeller    16 年前

    最后一条dll加载消息应该是您的罪魁祸首。然后,您可以在它的DllMain中设置一个断点,并尝试找出它失败的原因。