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


What's New for RAD Studio 11

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