10
votes

Impossible de déboguer le service Windows - "Joindre au processus"

Instructions Microsoft indiquez le suivant

dans Visual Studio, choisissez Joindre de la tâche à partir du menu Débogage.

La boîte de dialogue Processes apparaît.

Cliquez sur Afficher les processus système.

Dans la section Processus disponibles, cliquez sur le processus pour votre Service, puis cliquez sur Joindre.

Cependant, je ne vois pas les "processus du système d'affichage". option. J'ai essayé de vérifier les autres options mais mon service ne s'affiche pas dans la liste.

Entrez la description de l'image ici

Oui, j'ai installé et démarré les services et peut le voir dans le gestionnaire de service.

Je suis également conscient qu'il n'est pas possible de déboguer sur Stationart. Cependant, j'ai une boucle continue en cours d'exécution.


7 commentaires

Cela a fonctionné pour moi CodeProject. com / conseils / 261190 / ...


Merci, mais ça n'a pas fonctionné pour moi. Obtenir une erreur "Impossible de démarrer le service à partir de la ligne de commande ..."


Cochez la case "Afficher les processus de tous les utilisateurs", sélectionnez Code géré "dans" Joindre "liste déroulante et rafraîchir les processus de processus


Yuriy, malheureusement, votre suggestion n'a pas aidé. Je ne vois toujours pas le service dans la liste. Merci d'avoir essayé.


La boucle continue ne fonctionne pas à OnStart, n'est-ce pas?


@boruchsiper, si la suggestion de Yuriy n'a pas aidé, peut-être que votre service est immédiatement écrasé après le début? Il suffit de regarder le responsable de la tâche pour voir si votre processus de service existe ou consultez le journal des événements System Erros.


Est-ce que l'une des réponses résout votre problème? Si oui, veuillez noter en conséquence :)


6 Réponses :


0
votes

En réalité, pour permettre au programme d'obtenir la liste des processus de chaque utilisateur sur la machine, ce programme doit avoir des droits d'administration. Assurez-vous de démarrer Visual Studio avec le compte correspondant.


1 commentaires

J'ai démarré vs comme administrateur mais malheureusement, je ne pouvais toujours pas voir le service dans la liste.



9
votes

Vous pouvez ajouter quelque part en service, par exemple dans la méthode OnStart, ce code:

#if DEBUG
    System.Diagnostics.Debugger.Launch();
#endif


1 commentaires

Cela me convient de déboguer la fonction dans le service de service, je viens d'ouvrir la solution dans Visual Studio pour exécuter en tant qu'administrateur. alors j'ajoute système.diagnostics.debugger.launch (); dans la fonction de démarrage du service. merci @yuriy



17
votes

Vous devez faire ce qui suit:

  1. Ouvrez votre solution en mode Administrateur Visual Studio.
  2. Assurez-vous que votre service est en cours d'exécution.
  3. Ouvrez la "Fixation de la fenêtre de traitement"
  4. Assurez-vous que les deux cases à cocher sont cochées (tous les utilisateurs, toutes les sessions).
  5. Recherchez le nom de votre exécutable dans la liste.

    Si ce qui précède ne fonctionne pas, vous devrez fournir des détails supplémentaires sur votre configuration. : -)


0 commentaires

0
votes

Assurez-vous que Type de code sélectionné Les paramètres sont corrects. Vous les gérez en cliquant sur le bouton [Sélectionner ...] à côté de "Attacher à:". Dans l'image que vous avez attachée, vous l'avez définie sur "Automatique: Code natif". Essayez d'autres paramètres. NOTE: Appuyez sur la touche [rafraîchir] après avoir modifié le paramètre pour mettre à jour la liste des processus affichés.


0 commentaires

0
votes

Le nom du service peut être différent du nom du processus. Le nom du processus est probablement le nom du fichier EXE de service. Vous pouvez vérifier cela dans le gestionnaire de tâches ou dans votre projet Windows Service VS. (Le nom qui apparaît dans la fenêtre de processus de liaison est le nom du processus et non le nom du service)


0 commentaires

0
votes

Par défaut Les processus ne s'exécutent pas sous votre compte seront masqués, ce que les services sont exécutés par défaut, sauf si vous les définissez pour exécuter à l'aide d'un utilisateur personnalisé.

Assurez-vous que Afficher les processus de tous les utilisateurs est vérifié: Entrez la description de l'image ici


0 commentaires