问题 DbgHelp.dll是否内置于Windows?我可以依靠吗?


我用 来自CodeProject的Jochen Kalmbach的StackWalker类,在我的DLL中发生异常时生成堆栈跟踪。

它依赖于DbgHelp.dll

DbgHelp.dll是否内置于Windows Vista,WS2008,Windows 7?

我知道 适用于Windows的调试工具 来自微软,我知道DbgHelp.dll附带在该软件包中。但我也在我的机器上的%windir%\ system32中找到了DbgHelp.dll。


如果没有默认安装,有没有办法让我用我的DLL的调试版本重新分发它?


7607
2017-10-25 02:12


起源



答案:


微软说

“DbgHelp库是由DbgHelp.dll实现的。这个DLL包含在操作系统中。”

请注意,Windows调试工具当前包含的版本可能与操作系统附带的版本不同。


10
2017-10-25 02:14



这部分是正确的,从我能够说的,它没有与NT 4 / Windows 2000捆绑,但是自XP / Server 2003以来我没有遇到任何丢失的DLL问题,但值得记住。如果缺少,您可以随时在该计算机上下载并安装调试工具,它将起作用。这是我过去用Windows 2000调试较小问题时必须做的事情。 - John Leidegren


答案:


微软说

“DbgHelp库是由DbgHelp.dll实现的。这个DLL包含在操作系统中。”

请注意,Windows调试工具当前包含的版本可能与操作系统附带的版本不同。


10
2017-10-25 02:14



这部分是正确的,从我能够说的,它没有与NT 4 / Windows 2000捆绑,但是自XP / Server 2003以来我没有遇到任何丢失的DLL问题,但值得记住。如果缺少,您可以随时在该计算机上下载并安装调试工具,它将起作用。这是我过去用Windows 2000调试较小问题时必须做的事情。 - John Leidegren


通常最好将dbghelp.dll与您的应用程序一起发送,以确保您获得您期望的版本。我认为,由于这个原因,它可以再分发。

但是,值得记住的是,调试运行时库不是可再发行的。您的调试版本仍然必须(以VC ++术语)“发布”版本。


2
2017-10-25 02:49



仍然取决于msvcrt.dll(没有文件名中的版本指示),因此它不像“独立”那样可分发。 - Janosch
请注意,按照 go.microsoft.com/fwlink/?LinkId=294840 你不能发货 dbghelp &co DLLs本身,而不是 .msi,“未经修改,作为包”包含所述DLL: Program Files\Windows Kits\8.1\Debuggers\Redist\X86 Debuggers and Tools-x86_en-us.msi Program Files\Windows Kits\8.1\Debuggers\Redist\X64 Debuggers and Tools-x64_en-us.msi。 - vladr