Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
DatabaseDelphiIDENouvellesTech Partner

Nouveau plugin IDE: Parnassus Parallel Debugger

parallel-debugger-demo-screenshot-3

Balisage de l’√©diteur de code avanc√©, interface utilisateur de la pile d’appels et outils de d√©bogage multithread – dans un nouveau plugin pour RAD Studio d√©sormais disponible gratuitement.

Nous sommes tr√®s heureux d’annoncer une nouvelle extension IDE disponible aujourd’hui pour RAD Studio 10.4.1, cr√©√©e par le m√™me auteur que les plugins Bookmarks et Navigator populaires, Parnassus.¬†Si vous lisez ceci, il est d√©j√† disponible dans GetIt pour toute personne disposant d’un abonnement aux mises √† jour: ouvrez simplement GetIt, acc√©dez √† la section Plugins IDE et installez le ‘Parallel Debugger’.¬†Il n√©cessite Delphi ou C ++ Builder 10.4.1 ou plus r√©cent.

Qu’Est-ce que c’est?

  • Un outil de d√©bogage d’applications multithread
  • ‚Ķ Et cela aide √©galement au d√©bogage des applications traditionnelles √† threads uniques!

Quelque chose pour tout le monde. Lisez la suite pour en savoir plus!

editor-before-and-after-2

Une partie du nouveau balisage de l’√©diteur, utile pour vous m√™me si vous n’utilisez pas plusieurs threads dans votre application!

Le problème

Si vous avez plusieurs threads dans votre application, vous avez probablement voulu d√©boguer l’interaction des threads.¬†La vue d’un IDE traditionnel d’une application d√©bogu√©e, bien qu’elle puisse r√©pertorier plusieurs threads dans une vue Threads, consiste √† traiter l’application comme si elle n’avait qu’un seul thread: vous ne verrez qu’une seule pile d’appels, et les contr√īles run / pause / step sont pour l’ensemble du processus.¬†Cela vous laisse, un d√©veloppeur qui doit d√©boguer votre application, des questions telles que:

  • Comment voir si plusieurs threads s’ex√©cutent dans le m√™me code √† la fois?
  • Comment voir ce que font tous mes fils √† un moment donn√©?
  • Comment parcourir une m√©thode dans un seul thread?
    Ie, comment d√©boguer un thread sans que d’autres threads ne s’ex√©cutent et ex√©cutent du code que je ne veux pas qu’ils fassent, atteignant des points d’arr√™t, etc.?
  • Combien de CPU chacun de mes threads utilise-t-il?¬†Sont-ils efficaces?

Et peut-√™tre d’autres questions ou souhaits, m√™me le d√©bogage dans un seul thread, comme:

  • J’aimerais qu’il soit facile de voir toutes les m√©thodes de la pile d’appels en surbrillance dans mon code
  • Je souhaite que je puisse facilement faire un point d’arr√™t ne s’appliquer qu’√† un thread particulier
  • Je souhaite que le balisage de l’√©diteur montrant la ligne de code actuelle soit un peu plus √©vident
  • Je souhaite que, lors de la mise en pause du processus, cela ne m’am√®ne pas √† la vue CPU mais ne me montre que ma propre source

Chacun de ceux-ci est répondu par ce nouveau plugin.

Passons en revue ses fonctionnalit√©s.¬†Dans la section suivante, vous en apprendrez plus sur la vue Threads parall√®les et les piles d’appels parall√®les;¬†par fil d’ex√©cution et de progression;¬†la vue Processus;¬†nouveau balisage de l’√©diteur, y compris les threads et les piles d’appels dans l’√©diteur;¬†d√©finir l’affinit√© de thread d’un point d’arr√™t;¬†ex√©cution courante en mouvement;¬†le nouveau menu principal de Thread;¬†et plus‚Ķ

La vue des threads parallèles

Affichage> Fenêtres de débogage> Threads parallèles

Cette fen√™tre r√©pertorie tous les threads du processus, r√©pertori√©s horizontalement.¬†Lorsque votre application est en cours d’ex√©cution, si elle est sous Windows, chaque thread dispose d’un graphique affichant son utilisation du processeur.

parallel-threads-cpu

Lorsque l’application est suspendue, chaque thread affiche sa pile d’appels.

parallel-threads-call-stack

  • Chaque fil se voit attribuer une¬†couleur unique¬†, en commen√ßant par un bleu moyen pour le fil principal de l’application.¬†Cette couleur est utilis√©e comme un guide visuel pour identifier le fil partout.
  • Les noms des threads¬†sont affich√©s.¬†M√™me si vous ne nommez pas votre thread principal, Parallel Debugger est suffisamment intelligent pour le d√©tecter.
  • Le fil actuel est en gras et est entour√© d’une fine bordure de sa couleur.¬†Double-cliquez sur le titre d’un fil (son nom) pour en faire le fil actuel.
  • Les entr√©es de la pile d’appel sans code source – c’est-√†-dire non d√©boguables sans utiliser la vue CPU – sont r√©duites par d√©faut.¬†Vous pouvez les d√©velopper (ou les d√©sactiver pour afficher une pile d’appels traditionnelle.)

Lors de la mise en pause du processus, le d√©bogueur affichera toujours l’entr√©e de pile d’appels d√©boguable sup√©rieure.¬†Autrement dit, il peut ne pas afficher l’entr√©e sup√©rieure de la pile d’appels comme le fait traditionnellement l’EDI, mais il affichera le code source du v√ītre qui l’appelle.¬†L’id√©e ici est de d√©boguer ce sur quoi vous avez le contr√īle – affichez toujours la source.

Le bouton le plus √† gauche de la barre d’outils de chaque thread interrompt l’ensemble du processus, faisant de ce thread le thread actuel.¬†C’est ¬ę¬†mettre en pause le processus dans ce fil¬†¬Ľ.¬†Le bouton le plus √† droite vous permet de modifier l’ordre d’affichage des fils de discussion, en les √©pinglant √† gauche ou √† c√īt√© d’un autre fil √©pingl√©.¬†Ceci est utile lorsque vous avez de nombreux fils dans votre application et que vous souhaitez conserver ceux qui vous int√©ressent regroup√©s.¬†Si un thread √©pingl√© a un nom, l’√©pinglage est persistant lors des red√©marrages du processus: lorsque vous arr√™tez et red√©marrez votre application, les m√™mes threads seront √©pingl√©s.

Ex√©cution ou progression d’un seul fil

Les autres boutons de la barre d’outils sont destin√©s au contr√īle de l’ex√©cution des threads.

Les contr√īles normaux d’ex√©cution, de franchissement, d’entr√©e, etc. de l’EDI sont au niveau du processus;¬†c’est-√†-dire qu’ils ex√©cuteront tout le processus, r√©veillant tous les threads, et vous esp√©rez simplement que rien d’autre ne se produira jusqu’√† ce que l’op√©ration de progression soit termin√©e dans le thread que vous regardez.¬†En pratique, beaucoup peuvent – exceptions, points d’arr√™t, etc. – et bien s√Ľr, parfois, vous voulez simplement vous assurer que d’autres threads ne s’ex√©cutent pas pendant le d√©bogage d’un seul thread.

thread-control-buttons-onlyCes boutons de la barre d’outils vous permettent d’ex√©cuter et de progresser √† un niveau par thread.¬†Vous pouvez:

  • Ex√©cuter uniquement ce thread, en gardant tous les autres threads en pause
  • Gardez ce thread en pause, mais ex√©cutez tous les autres threads
  • Entrez dans une m√©thode, dans ce fil uniquement
  • Passez au-dessus d’une ligne de code, dans ce fil uniquement.¬†Cela permet uniquement √† ce thread de s’ex√©cuter et de progresser;¬†aucun autre thread n’est autoris√© √† s’ex√©cuter en m√™me temps
  • Ex√©cuter jusqu’au retour de la m√©thode, pour ce thread uniquement

Pour les utiliser, assurez-vous que le fil de discussion qui vous int√©resse est le fil actuel, en double-cliquant sur son titre ou son nom.¬†Vous verrez qu’il dessine son titre en gras.

Chacun de ceux-ci a un raccourci clavier, ce qui signifie que vous pouvez utiliser le clavier pas seulement en cliquant sur un bouton avec la souris. Les raccourcis sont visibles dans le menu Thread qui contient des éléments de menu pour le thread actuel (voir ci-dessous).

Le contr√īle d’ex√©cution par thread est l’une des fonctionnalit√©s les plus puissantes du d√©bogueur parall√®le.

Int√©gration de l’√©diteur

Une t√Ęche importante pour comprendre ce qui se passe dans une application multithread est de savoir quand plusieurs threads s’ex√©cutent dans la m√™me zone de code.¬†Le d√©bogueur parall√®le rend cela clair en ajoutant un balisage dans l’√©diteur pour la pile d’appels compl√®te de chaque thread.¬†Ceux-ci sont affich√©s via des ¬ębalises¬Ľ, de petits marqueurs color√©s sur le c√īt√© droit de l’√©diteur.

L’entr√©e sup√©rieure de la pile d’appels – c’est-√†-dire o√Ļ le thread s’ex√©cute ¬ę¬†maintenant¬†¬Ľ – est marqu√©e d’une balise de couleur unie, en utilisant la couleur du thread.¬†Les autres entr√©es de la pile d’appels pour le m√™me thread sont dans une version fan√©e de la couleur du fil (notez que le fil est toujours marqu√© d’un cercle plein dans la balise).

editor-tags-2

Cela vous permet de lire rapidement votre code et de savoir, ¬ę¬†Thread X s’ex√©cute quelque part dans cette ligne de code¬†¬Ľ et ¬ę¬†Thread Y et Thread Z sont tous les deux dans la m√™me m√©thode en ce moment¬†¬Ľ.¬†Vous verrez m√™me o√Ļ se trouvent exactement les fils.¬†Dans cette capture d’√©cran, le thread actuel est le bleu et un deuxi√®me thread (rouge clair) est en cours d’ex√©cution avec son point d’ex√©cution actuel dans IsPrime (), mais l’appel √† IsPrime a mis en √©vidence la ligne au-dessus du point d’ex√©cution du thread actuel.

Exécution en mouvement

Avant d’installer le plugin, l’EDI affichait le point d’ex√©cution du thread actuel avec une petite fl√®che bleue.¬†Cela est maintenant remplac√© par un grand chevron sur le c√īt√© gauche de l’√©diteur de code.

moving-execution-point

Vous pouvez modifier l’emplacement du point d’ex√©cution – o√Ļ le thread commencera √† s’ex√©cuter la prochaine fois que vous appuierez sur Ex√©cuter ou √Čtape – simplement en cliquant et en faisant glisser ce marqueur.

Affinit√© de thread de point d’arr√™t

thread-affinity-menu

d’installer le plugin, les points d’arr√™t ont √©t√© dessin√©s √† l’aide d’un point rouge, mais avec le d√©bogueur parall√®le, les threads re√ßoivent des couleurs et le rouge signifie le fil rouge.¬†Les points d’arr√™t qui s’appliquent √† tous les threads sont d√©sormais dessin√©s sous la forme d’une roue multicolore.

Pour qu’un point d’arr√™t s’applique uniquement √† un thread sp√©cifique, cliquez avec le bouton droit sur le point d’arr√™t.¬†Le nouveau menu Point d’arr√™t vous permet de choisir un thread auquel le point d’arr√™t s’appliquera.

breakpoint-green-thread-4

Ici, ce point d’arr√™t s’applique uniquement au thread vert.

La vue Process

Affichage> Déboguer Windows> Processus

process-view-2

Cette fen√™tre affiche des informations sur le processus dans son ensemble.¬†Il affiche l’utilisation du processeur au niveau du processus (√† nouveau divis√© en noyau et mode utilisateur), le type de processus (par exemple Wow64), et dispose de boutons ex√©cuter / pause / r√©initialisation, etc.¬†Ceux-ci sont au niveau du processus, c’est-√†-dire qu’ils fournissent les m√™mes fonctionnalit√©s que la propre barre d’outils d’ex√©cution de l’EDI.

Vous pouvez également voir une liste de threads en cliquant sur le bouton en bas, comme moyen rapide de choisir le thread actuel (car le défilement horizontal dans la vue Threads peut prendre plus de temps si vous avez de nombreux threads.)

Le menu principal de Thread

thread-main-menu

L’EDI a maintenant un menu Thread, situ√© √† droite du menu Ex√©cuter.¬†Cela fournit un menu pour la plupart des op√©rations directes que vous pouvez effectuer pour un thread.¬†Il vous permet de d√©finir le thread d’int√©r√™t (c’est-√†-dire le thread actuel si le processus est suspendu ou le thread que vous souhaitez devenir le thread actuel la prochaine fois que vous mettez en pause), et pour le thread actuel, des √©l√©ments de menu pour le contr√īle de l’ex√©cution du thread.¬†Vous pouvez voir des raccourcis sur ces √©l√©ments de menu.

Il r√©pertorie √©galement chaque thread dans l’application, et pour chacun d’eux montre que vous ex√©cutez le contr√īle plus l’√©pinglage, en fait les m√™mes fonctionnalit√©s que dans la vue Parallel Threads.

Niveau de fonctionnalité

thread-menu-feature-level-2

Enfin, l’√©l√©ment de menu tout en haut contr√īle le niveau de fonctionnalit√© du d√©bogueur parall√®le: ce qu’il fait lorsque votre application est en cours d’ex√©cution.¬†Le niveau le plus bas est juste pour suivre l’utilisation du processeur: utilisez ceci si vous voulez que le d√©bogueur parall√®le soit install√©, mais que vous ne voulez pas l’utiliser activement pour cette application actuellement.¬†Les deux niveaux suivants contr√īlent la profondeur √† laquelle le d√©bogueur suit les piles d’appels de thread.

Utilisez ceci si vous avez des dizaines ou des centaines de threads.¬†Dans cette situation, vous n’√™tes probablement int√©ress√© que par un sous-ensemble de threads.¬†D√©finissez le niveau de fonctionnalit√© sur ¬ę¬†Piles d’appels s√©lectionn√©es uniquement¬†¬Ľ et le d√©bogueur parall√®le suivra les piles d’appels pour le thread principal, les threads √©pingl√©s et le thread actuel uniquement par d√©faut.¬†Vous pouvez toujours obtenir la pile d’appels pour n’importe quel thread en cliquant sur un bouton affich√© sur la zone de pile d’appels dans la vue Threads.

Plateformes prises en charge

Le débogueur parallèle a toutes les fonctionnalités lors du débogage local des applications sur Windows.

Sur d’autres plates-formes, ou le d√©bogage √† distance, la fonctionnalit√© d√©pend de ce que le d√©bogueur prend en charge.¬†L’utilisation du processeur n’est prise en charge que pour les applications Windows locales (d√©bogage non distant).¬†La progression ou l’ex√©cution par thread ne fonctionnera que sur les plates-formes prenant en charge le gel des threads.¬†Il existe un probl√®me connu pour C ++ Win64 o√Ļ les piles d’appels ne peuvent pas √™tre √©valu√©es: cela sera corrig√© dans une prochaine version de C ++ Builder.

Suivant une tradition de Parnassus commencée avec les signets, le débogueur parallèle résout en fait un bogue! ( RSP-29768 .)

En général: si vous utilisez Windows, le débogueur a toutes les fonctionnalités.

Le plugin prend en charge RAD Studio 10.4.1 (et plus récent, lorsque la version 10.4.2 sort.)

Obtenir le débogueur parallèle

Le débogueur parallèle est maintenant dans GetIt!

Gr√Ęce √† Embarcadero, Parnassus met le d√©bogueur gratuitement √† la disposition de tout client RAD Studio avec un abonnement de mise √† jour actif.¬†Ouvrez GetIt, acc√©dez √† la cat√©gorie Plugins IDE et cliquez sur Installer.

Parnassus et Embarcadero espèrent que vous trouverez cette extension comme un excellent ajout à votre IDE.

Sur une note personnelle, je tiens √† remercier Embarcadero pour son int√©r√™t pour le plugin et pour vouloir l’ajouter √† GetIt, ainsi qu’√† tous mes b√™ta-testeurs qui ont utilis√© diff√©rentes versions de ce plugin de qualit√© lentement croissante depuis ao√Ľt.¬†Merci beaucoup √† tous!

parallel-debugger-demo-screenshot-3


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Articles Similaires
IDENouvelles

Aider l'éditeur de liens: fractionner l'utilisation de la mémoire DWARF et de l'éditeur de liens dans C ++ Builder 10.4.2

Nouvelles

Augmentez la productivité avec les derniers nouveaux packages Embarcadero GetIt

Nouvelles

Mise à jour de C ++ GM: Focus sur la qualité C ++ dans 10.4 et 10.4.1

Leave a Reply

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

IN THE ARTICLES