7
votes

Visual Studio: Comment déboguer une bibliothèque avec un exécutable externe?

Je développe une bibliothèque de classe. La bibliothèque doit être utilisée par un autre programme, une .exe sans code source. L'emplacement du fichier de bibliothèque est transmis comme un paramètre à cet EXE, par exemple en exécutant: prog.exe lib.dll

Je voudrais déboguer la bibliothèque à l'aide de ce fichier .exe (en utilisant des outils de débogage tels que des points d'arrêt, etc.) Comment utiliser Visual C # pour le faire?

J'ai trouvé une manière possible, qui crée un programme à une ligne qui exécute prog.exe lib.dll . Il y a sûrement une meilleure façon?


0 commentaires

3 Réponses :


1
votes

Si vous avez déjà un programme externe utilisant votre bibliothèque (qui est également une application .NET, je suppose), vous pouvez démarrer ce programme et joindre le débogueur au processus ( débogueur -> attacher au processus dans le menu). Ensuite, vous serez en mesure de définir des points d'arrêt dans votre code de la bibliothèque de classe et de le déboguer. Assurez-vous que l'EXE utilise un fichier DLL et PDB qui est synchronisé avec votre code (la dernière version).


1 commentaires

Les versions Express ne disposent pas de la fonctionnalité de déboguer des processus externes: msdn.microsoft.com /en-us/library/c6wf8e4z.aspx



3
votes

Dans les options de débogage du projet, sélectionnez "Démarrer le programme externe" et entrez le chemin de l'EXE. Lors du démarrage du débogage VS démarrera l'EXE, joignez-la comme un débogueur.

Lorsque votre bibliothèque est chargée, des points d'arrêt sur votre code seront activés.

Une mise en garde: avec un programme externe Assurez-vous qu'il loge la DLL que vous construisez, les choses peuvent être (au mieux) si elles chargent une version différente qui ne correspond pas au code source.


2 commentaires

"Démarrer le programme externe" n'apparaît pas dans l'option de débogage du projet. Je n'ai que des arguments de ligne de commande et un répertoire de travail. J'ai essayé d'ajouter le chemin de programme à l'argument de la ligne de commande, cela ne permet toujours pas de déboguer.


@Louis: Cela pourrait être un problème (ne pas avoir express, alors ne pouvez pas vérifier).



0
votes
  1. Vous pouvez probablement essayer WINDBG. Avec l'extension SOS, il est padi possible de tout ce que vous faites avec Visual Studio.
  2. Si tout ce que vous voulez, c'est de déboguer la bibliothèque, pourquoi ne pouvez-vous pas charger cette bibliothèque dans un EXE que vous avez créé et entrez à l'intérieur de la bibliothèque,

0 commentaires