Debug de service windows

Résolu
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 - 4 juil. 2013 à 09:59
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 - 4 juil. 2013 à 16:30
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
A voir également:

6 réponses

sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
4 juil. 2013 à 15:45
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
3
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
4 juil. 2013 à 10:18
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.
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
4 juil. 2013 à 10:41
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
0
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
4 juil. 2013 à 15:49
Tu devais scarément en avoir besoin :)

En tout cas, merci pour le partage.


Mauricio


Composants Cindy pour Delphi
Faites une donation.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
4 juil. 2013 à 15:58
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
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
4 juil. 2013 à 16:30
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
0
Rejoignez-nous