Debug de service windows [Résolu]

Signaler
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
-
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
-
Bonjour,

Pour debuguer un service windows, voici la méthode que j'utilise (d'après les docs d'embarcadero) :
- Démarrage de Delphi XE2 (ou 4) en tant qu'administrateur (élévation de privilèges)
- Ouverture de mon projet,
- Compilation
- Installation du service (avec un batch exécuté en administrateur : "[Nom complet de l'exe]" /install),
- Démarrage du service
- Dans Delphi : Menu "Exécuter">"Attacher au processus" et je sélectionne l'exécutable de mon service en exécution,
- Enfin, je clique sur le bouton "Exécuter (F9)"

Le problème, c'est que dès que j'attache mon dev au processus, Delphi m'ouvre une fenêtre CPU, et bien que je puisse poser des points d'arrêt dans le code, ils ne sont pas actifs et le programme ne s'y arrête pas.

D'où mes questions :
- Est-ce normal ? Est-ce le seul débugage que l'on peut faire sur un service ?
- Y a t'il une autre méthode qui permette d'utiliser les points d'arrêt ?

Merci d'avance pour vos réponses.


Simon

6 réponses

Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Mauricio, c'est avec une émotion non contenue que je vais te donner la méthode (pour windows 7, XE2) !!!

J'ai bataillé un peu, et j'ai fini par trouver...
- Déjà, on ne débug que la version debug (jusque là...),
- Démarrer Delphi en admin (sinon on ne voit pas le service dans la liste des processus rattachables),
- Ouvrir le projet à pister,
- Dans Projet > Options > Compilateur Delphi > Liaison : Cocher "inclure les symboles de debugage distant",
- Compiler le projet sans points d'arrêt pour générer l'exécutable,
- Installer le service,
- Placer les points d'arrêt,
- Démarrer le service (en ce qui me concerne, j'ai mis un timer à 15 secondes avant le déclenchement du traitement pour pouvoir avoir le temps de faire le reste des manips ci dessous),
- Dans Delphi, dans Exécuter > Attacher au processus, choisir l'exécutable du service à debuguer,
- Appuyer sur F9, c'est parti !



Simon
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Salut Simon,

malheureusement, j' ai eu les mêmes problèmes que toi.
J' ai fini para faire le service comme appli normale puis j' ai récupéré les unités dans mon service.

a+


Composants Cindy pour Delphi
Faites une donation.
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Oui, habituellement je fais un service et l'appli VCL correspondante pour le tester, mais c'est un peu dommage (pénible ?). Surtout qu'il y a quand même quelques différences dans les methodes (formCreate, formDestroy, ServiceStart, ServiceStop...)

Simon
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Tu devais scarément en avoir besoin :)

En tout cas, merci pour le partage.


Mauricio


Composants Cindy pour Delphi
Faites une donation.
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Bé je fais pas mal de services en ce moment (pour un serveur où je n'ai pas forcément de session ouverte, donc il faut que ça tourne dès que le serveur est démarré), du coup, ça me gave un peu de faire une appli VCL à chaque fois pour les tests...

Simon
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
NB : Il faut régénérer l'exécutable sans point d'arrêt après chaque modification du source, puis relancer en attachant au processus pour débuguer...


Simon