2009-10-25 4 views
10

Ich verwende Jochen Kalmbach's StackWalker class from CodeProject, um eine Stacktrace zu erzeugen, wenn eine Ausnahme in meiner DLL auftritt.Ist DbgHelp.dll in Windows integriert? Kann ich mich darauf verlassen, dass es da ist?

Es stützt sich auf DbgHelp.dll

Ist DbgHelp.dll eingebaut in Windows Vista, WS2008, Windows 7?

Ich weiß über The Debugging Tools for Windows von Microsoft, und mir ist bekannt, dass DbgHelp.dll in diesem Paket geliefert wird. Aber ich habe auch DbgHelp.dll in% windir% \ system32 auf meinem Rechner gefunden.

Wenn es nicht standardmäßig installiert ist, gibt es eine Möglichkeit für mich, es mit Debug-Builds meiner DLL neu zu verteilen?

Antwort

10

Microsoft says:

"Die DbgHelp Bibliothek von DbgHelp.dll implementiert Diese DLL im Betriebssystem enthalten ist."

Beachten Sie, dass die derzeit in den Debugging Tools für Windows enthaltene Version möglicherweise nicht mit der Version identisch ist, die im Betriebssystem enthalten ist.

+0

Dies ist teilweise wahr, von dem, was ich sagen konnte, ist es nicht mit NT 4/Windows 2000 gebündelt, aber seit XP/Server 2003 hatte ich kein Problem mit fehlenden DLLs, aber es ist es wert, sich daran zu erinnern. Wenn es fehlt, können Sie immer die Debugging-Tools auf diesem Rechner herunterladen und installieren, und es wird funktionieren. Dies musste ich in der Vergangenheit mit Windows 2000 tun, um kleinere Probleme zu beheben. –

2

Es ist im Allgemeinen am besten, dbghelp.dll mit Ihrer Anwendung zu versenden, um sicherzustellen, dass Sie die erwartete Version trotzdem erhalten. Ich glaube, dass es aus diesem Grund wieder verteilbar ist.

Es ist jedoch zu beachten, dass die Debug-Laufzeitbibliothek nicht weitervertreibbar ist. Ihre Debug-Builds müssen immer noch (in VC++ - Begriffen) "release" -Builds sein.

+0

Immer noch hängt es von msvcrt.dll (ohne Angabe der Version im Dateinamen), so ist es nicht so verteilbar wie in "Standalone". – Janosch

+0

Beachten Sie, dass gemäß http://go.microsoft.com/fwlink/?LinkId=294840 Sie nicht die 'dbghelp'- & co-DLLs selbst, sondern die' .msi', "unmodified, as a package", die enthält, liefern können sagte DLLs: 'Programme \ Windows-Kits \ 8.1 \ Debuggers \ Redist \ X86 Debugger und Tools-x86_de-us.msi Programmdateien \ Windows Kits \ 8.1 \ Debuggers \ Redist \ X64-Debugger und Tools-x64_en-us. msi'. – vladr

Verwandte Themen