2009-09-09 9 views
3

J'essaye de déboguer un service Windows en utilisant VS2008 sur Win7 64-Bit. Le problème que j'ai est qu'aucun de mes points d'arrêt ne sont touchés, indépendamment de la configuration de construction que je choisis: x86, x64 ou AnyCPU. En utilisant "Attach to Process" après le démarrage du service, aucun des points d'arrêt n'est atteint - et l'EDI ne m'informe pas qu'ils ne seront pas touchés (en faisant le cercle et le contour rouge, par exemple) - il semble simplement agir comme si les points de rupture n'étaient même pas là.VS2008 sur Win7 64 bits: Débogage d'un service Windows

Quelqu'un peut-il me diriger dans la bonne direction ici?

Remerciements

/Richard.

Répondre

2

questions évidentes d'abord ...

  • vous compilez en mode débogage ou le mode de sortie?
  • Les fichiers .pdb se trouvent-ils à l'emplacement d'installation de votre service?
  • Etes-vous sûr que le code dans lequel vos points d'arrêt sont définis est en cours d'exécution?

Si aucun de ces problèmes ne se produit, essayez d'insérer la ligne suivante dans le constructeur de votre service. Lorsque le service démarre, vous devez choisir un débogueur. Lorsque le débogueur s'ouvre, il s'arrête au point d'arrêt programmatique et vous pouvez continuer à partir de là. Je ne travaille pas avec Windows 7, mais je ne pense pas que cet aspect de Visual Studio 2008 ait beaucoup changé depuis Windows XP. J'utilise cette méthode programmatique tout le temps pour entrer une session de débogage pour mon service Windows.

+0

Compilé en mode débogage, les fichiers PDB sont situés à l'endroit prévu, 100% sûr que le code où les points d'arrêt sont définis est en cours d'exécution. J'ai utilisé la méthode Debugger.Break() et cela n'a pas fonctionné. Toujours ne cassera pas! – Richard

+2

J'ai marqué cette question comme réponse parce que, bien que n'étant pas directement l'action qui a conduit à la résolution, vous avez commencé sur la bonne voie avec votre commentaire sur les modes de compilation. En fin de compte, le problème était de tenter de déboguer une application dans une solution mixte x86/x64, que l'IDE n'aimait apparemment pas sur Win7 x64. Recompiler tout comme x86 a fait l'affaire. Merci. – Richard

+0

Merci pour le vote. Juste une note ... Je pense que vous pouvez toujours répondre à votre propre question et ensuite accepter cette réponse. –

-1

Exécutez-vous Visual Studio en tant qu'administrateur (y compris lancement élevé sous UAC)?

+0

Oui, essayé avec et sans. – Richard

0

Je sais que cela ne répond pas à votre question directe, mais nous found this approach de Eric De Carufel pour être très utile lors du développement et des tests de services Windows.

Il est non intrusif et se débarrasser de l'étape fastidieuse «s'attacher au processus».

La possibilité de le mettre en mode débogage lorsqu'il est déjà déployé en tant que service Windows est également utile. Par exemple pour voir la trace de la pile au lieu du service qui vient de mourir sur vous.

Questions connexes