2010-12-09 1 views
0

J'ai un fichier .dll produit avec Visual Studio 2005 (C++ non managé). Dans diverses fonctions dans la DLL, je peux détecter les erreurs et appeler une autre fonction dans la DLL pour produire un minidump (en utilisant dbghelp.dll).en utilisant une fonction .dll pour produire un minidump où l'application n'est pas faite par Visual Studio

Cela fonctionne parfaitement lorsque l'application utilisant la DLL est également un programme produit par VS2005. Cependant, quand j'utilise National Instrument Measurement Studio/CVI pour produire l'application (en clair C, pas que cela devrait avoir de l'importance), il n'obtient pas de fichier .pdb (surprise!). Par conséquent, lorsque j'ouvre le fichier .dmp généré avec VS2005, il me dit que l'application n'a pas été construite avec le débogage (mais c'était le cas!) Et que la pile affichée est inutile.

Plusieurs (40+) autres fonctions de cette DLL sont utilisées avec succès par l'application CVI. Cela semblerait démontrer l'accès réussi des fonctions DLL à partir de l'application non-VS. National Instruments peut apparemment utiliser un vidage complet de DrWatson, il doit donc être possible.

Est-ce que quelqu'un sait comment obtenir ce qui est nécessaire pour utiliser le fichier .dmp?

En résumé: Non .NET, l'accès à la fonction est correct, les fichiers minidump générés ne semblent pas utilisables par Visual Studio.

Merci pour votre aide.

Répondre

0

Vous devez avoir des symboles (au moins dllexports) pour pouvoir analyser le fichier de vidage. Essayez d'utiliser les outils de débogage pour Windows (WinDBG) pour ouvrir le fichier minidump et voir ce que vous avez. WinDBG fait un bien meilleur travail d'analyse des vidages que VisualStudio 2005.

+0

Merci, mais cela ne fonctionne pas non plus. Il s'avère que j'ai vraiment * besoin * d'un fichier .pdb. Pour l'instant, la solution consiste à convertir mon projet LabWindows/CVI en projet VS2005 (ou VS2008). Dans le dernier (CVI2010), cela s'avère modérément facile et sera probablement ma solution finale. L'utilisation d'un compilateur externe dans CVI ne fonctionne pas non plus car ils utilisent une modification de script bizarre à la volée pour implémenter ceci et cela laisse les bonnes options. –

Questions connexes