Débogage des programmes de services NT
------------ Extrait du livre Delphi 6 Guide de développement des applications
Il existe deux façons de déboguer un programme de services. La première consiste à définir la partie fonctionnelle du service dans une classe distincte et à le déboguer dans un programme séparé. Le deuxième type consiste à déboguer lorsque le service est en cours d'exécution. La première approche est une bonne idée; ajouter des cours responsables du travail de service au programme habituel est le moyen le plus simple de tester le comportement des services et de maintenir la cohérence avec l'idée des tests de travail.
Nous utilisons la première méthode pour tester lors de la création de deux programmes: ServiceApp et TestMailer (également disponible sur le CD de ce livre). Ajoutez les mêmes composants TidMessage, Ttimer et TIDSTMP à un programme distinct et créez un expéditeur de courrier. Lorsque le défaut du programme TestMailer est trouvé, toutes les modifications sont mises à jour au programme de service. Créer un établi ou tester un programme est facile, mais pas toujours suffisant.
La deuxième façon de tester un programme de service consiste à installer et à exécuter le programme de service, puis à l'attacher au processus d'exécution à Delphi. Suivez ces étapes pour déboguer le programme ServiceApp.exe lors de l'exécution du service.
1. Exécutez ServiceApp.exe / Installer sur la ligne de commande pour installer le programme de service.
2. Sélectionner les paramètres | Localisez MyService et cliquez sur le bouton de démarrage de la barre d'outils du service (les étapes sont applicables à Windows 2000; les étapes de Windows NT4.0 sont presque les mêmes).
3. Exécutez Delphi.
4. Chargez le projet ServiceApp.DPR.
5. Sélectionnez l'élément de menu Run | Attachez à Delphi.
6. Dans la boîte de dialogue attacher à Process (comme indiqué sur la figure ci-dessous), sélectionnez la case à cocher Show System Process.
7. localisez ServiceApp.exe et cliquez sur le bouton attacher.
8. Dans Delphi, définissez un point d'arrêt sur la méthode de l'événement Onexecure du fichier source du projet et appuyez sur F9.
Figure B.3 Boîte de dialogue attacher au processus peut être utilisée pour joindre un débogueur Delphi à un processus en cours d'exécution;
Delphi attachera le débogueur au programme de service en cours d'exécution et ouvrira la boîte de dialogue CPU. Sauf si vous lisez le langage d'assemblage très bien, les vues CPU ne sont pas très utiles. Mais lorsque le programme de service s'exécute vers un point d'arrêt, il s'arrête sur le point d'arrêt et passe à la vue de code Delphi. Une fois que l'utilisateur a obtenu le contrôle du service en cours d'exécution via Delphi, le service peut être avancé et débogué comme d'autres programmes.
Remarque: En tant que développeur, vous devriez avoir des droits d'administrateur sur votre PC. Incroyablement, certaines organisations font confiance au code écrit par les développeurs mais ne leur permettent pas de gérer leurs propres PC. La situation économique actuelle est toujours bonne, alors trouvez un nouvel emploi.
La documentation de l'aide de Delphi mentionne que si les autorisations sont insuffisantes, la joie au processus de service peut échouer. Lorsque vous avez des droits d'administrateur sur votre PC, le processus de service ci-joint fonctionne toujours bien. Le sujet d'aide "Débogage des services" contient une troisième façon de déboguer les services, qui consiste à modifier les paramètres du registre, auxquels vous pouvez vous référer.
Ye Zhengsheng
2005-05-22