2010-12-09 15 views
0

Ich habe eine DLL-Datei mit Visual Studio 2005 (nicht verwaltet C++) erstellt. In verschiedenen Funktionen innerhalb der DLL kann ich Fehler erkennen und eine andere Funktion innerhalb der DLL aufrufen, um eine Minidump (mit dbghelp.dll) zu erzeugen.Verwenden einer DLL-Funktion zum Erstellen eines Minidump, wo Anwendung von Visual Studio nicht erstellt wird

Dies funktioniert perfekt, wenn die Anwendung mit der DLL auch ein VS2005-Programm ist. Wenn ich jedoch National Instrument Measurement Studio/CVI verwende, um die Anwendung zu erstellen (in Klarschrift C, nicht dass es wichtig wäre), erhält es keine .pdb-Datei (Überraschung!). Als Ergebnis, wenn ich die generierte .dmp-Datei mit VS2005 öffne, sagt es mir, dass die Anwendung nicht mit dem Debuggen gebaut wurde (aber es war!) Und der gezeigte Stack nutzlos ist.

Viele (40+) andere Funktionen in dieser DLL werden erfolgreich von der CVI-Anwendung verwendet. Dies scheint den erfolgreichen Zugriff der DLL-Funktionen von der Nicht-VS-Anwendung zu demonstrieren.

National Instruments kann anscheinend einen vollständigen Dump von DrWatson verwenden, also muss es möglich sein.

Weiß jemand wie man bekommt, was für die Verwendung der .dmp Datei benötigt wird?

Zusammenfassend: Nein. NET, Funktion Zugriff ist in Ordnung, generierte Minidump-Dateien scheinen nicht von Visual Studio verwendbar.

Danke für Ihre Hilfe.

Antwort

0

Sie müssen Symbole (mindestens dllexports) haben, um die Dump-Datei analysieren zu können. Verwenden Sie Debugging Tools für Windows (WinDBG), um die Minidump-Datei zu öffnen und zu sehen, was Sie haben. WinDBG macht einen viel besseren Job, Dumps als VisualStudio 2005 zu analysieren.

+0

Danke, aber das funktioniert auch nicht. Es stellt sich heraus, dass ich wirklich * eine * .pdb-Datei brauche. Zur Zeit besteht der Work-Around darin, mein LabWindows/CVI-Projekt in ein VS2005 (oder VS2008) -Projekt umzuwandeln. In der neuesten Version (CVI2010) ist dies relativ einfach und wird wahrscheinlich meine endgültige Lösung sein. Die Verwendung eines externen Compilers innerhalb von CVI funktioniert auch nicht, da sie einen bizarren Skript-Schnitt verwenden, um dies zu implementieren, und es die richtigen Optionen weglässt. –