Pgdbg/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
(Created page with "PGDBG")
 
No edit summary
 
(35 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages />
<languages />
PGDBG is a powerful and simple tool for debugging both MPI-parallel and OpenMP thread-parallel Linux applications. It is included in the PGI compiler package and configured for OpenMP thread-parallel debugging.
= Description =
PGDBG est un outil simple mais puissant pour le débogage d’applications parallèles MPI et OpenMP sous Linux. L’outil fait partie du paquet du compilateur PGI et est configuré pour OpenMP avec fils parallèles. Il peut être utilisé  en mode graphique avec redirection X11 ou en mode ligne de commande.


For the most of the C, C++, or Fortran 77 codes one can use a regular GNU debugger such as GDB. However, the Fortran 90/95 programs are not handled very well by the GDB. The Portland Group has developed a debugger called [https://www.pgroup.com/products/tools.htm/pgdbg.htm pgdbg] which is more suited for such codes. Pgdbg is provided in two modes: a graphical mode with the enabled X11 forwarding or a text mode.  
Un débogueur GNU comme GDB conviendra pour la plupart des programmes C, C++ ou Fortran77. Cependant, GDB ne fonctionne pas très bien avec les programmes Fortran 90/95; c’est pourquoi le Portland Group a développé [https://www.pgroup.com/products/tools.htm/pgdbg.htm pgdbg].  


= Quickstart guide =
=Guide de démarrage=
Using PGDBG usually consists of two steps:
# '''Compilation''': Compile the code with the debugging enabled
# '''Execution and debugging''': Execute the code and analyze the results
The actual debugging can be accomplished in either command-line mode or graphical mode.


Le travail avec PFDBG s’effectue généralement en deux étapes :
#'''compilation''' : le code est compilé (avec l’option <tt>-g</tt> pour obtenir les symboles de débogage);
#'''exécution et débogage''' : le code est exécuté et les résultats sont analysés.
Le débogage peut se faire en mode ligne de commande ou en mode graphique.


== Environment modules ==
 
Before you start profiling with PGDBG, the appropriate [[Utiliser des modules/en|module]] needs to be loaded.
== Modules d’environnement ==
PGDBG is part of the PGI compiler package, so run <code>module avail pgi</code> to see what versions are currently available with the compiler, MPI, and CUDA modules you have loaded. For a comprehensive list of PGI modules, run <code>module -r spider '.*pgi.*'</code>.
Il faut d’abord charger le [[Utiliser des modules | module]] pour le paquet PGI. Pour connaître les versions disponibles pour les modules du compilateur, de MPI et de CUDA que vous avez chargés, lancez <code>module avail pgi</code>. Pour connaître la liste complète des modules PGI disponibles, lancez  <code>module -r spider '.*pgi.*'</code>. En date de décembre 2018, les versions disponibles sont
<br>As of December 2018, these were:
*pgi/13.10
* pgi/13.10
*pgi/17.3
* pgi/17.3
Pour charger un module, lancez <code>module load pgi/version</code>; par exemple, pour la version 17.3, la commande est
Use <code>module load pgi/version</code> to select a version; for example, to load the PGI compiler version 17.3, use
{{Command|module load pgi/17.3}}
{{Command|module load pgi/17.3}}


== Compiling your code ==
== Compilation ==
To be able to debug with pgdbg you first need to compile your code with debugging information enabled. With the pgdbg you do so by adding a debugging flag "-g":
Avant d’être débogué, le code doit d’abord être compilé en ajoutant l’indicateur <tt>-g</tt> pour obtenir les renseignements utiles au débogage.
{{Command|pgcc -g program.c -o program}}
{{Command|pgcc -g program.c -o program}}


== Command-line mode ==
==Exécution et débogage en mode ligne de commande==
Once your code is compiled with the proper options, you can run the PGDBG for the analysis. The debugger's default user interface is a graphical user interface or GUI. However, if for some reasons you don't want to run in GUI or don't have X11 forwarding, you can run pgdbg in a text mode by adding an extra option "-text" :
Une fois le code compilé avec les options appropriées, lancez PGDBG pour effectuer l’analyse. Par défaut, l’affichage se fait par l’interface graphique. Si toutefois vous ne voulez pas utiliser cette interface ou que vous n’avez pas la redirection X11, vous pouvez travailler en mode ligne de commande en ajoutant l’option <tt>text</tt> au lancement de PDGDB.
{{Command|pgdbg -text program arg1 arg2}}


Once the PGDBG is invoked in the command-line mode, you will have an access to prompt:
En mode ligne de commande, une invite est affichée.
{{Command
{{Command
|pgdbg -text program  
|pgdbg -text program  
Line 39: Line 38:
}}
}}


Before you can debug you need to execute ''run'' in the prompt:
À l’invite, lancez la commande <tt>run</tt>.
{{Command
{{Command
|
|
Line 45: Line 44:
pgdbg> run
pgdbg> run
}}
}}
PGDBG automatically attaches to new threads as they are created during program execution. PGDBG describes when a new thread is created.
En cours d’exécution du programme, PGDBG s’attache automatiquement aux fils et décrit chacun d’eux au fur et à mesure qu’ils sont créés. En cours de débogage, PGDBG travaille sur un seul fil à la fois, le fil courant.  
During a debug session, at any one time, PGDBG operates in the context of a single thread, the current thread. The current thread is chosen by using the ''thread'' command. The ''threads'' command lists all threads currently employed by an active program:
La commande <tt>thread</tt> sert à sélectionner le fil courant,
la commande <tt>threads</tt> liste les fils utilisés à ce moment par un programme actif.
{{Command|| result=
{{Command|| result=
pgdbg > threads
pgdbg > threads
Line 56: Line 56:
}}
}}


For example, now we switch the context to thread with ID 2. Use command ''thread'' to do so:
Par exemple, pour sélectionner ID 2 comme fil courant, la commande <tt>thread</tt> serait 
{{Command ||result=
{{Command ||result=
pgdbg > thread 3
pgdbg > thread 3
Line 67: Line 67:
}}
}}


== Graphical mode ==
==Exécution et débogage en mode graphique==
This is the default user interface of the PGDBG debugger. If you have set the X11 forwarding then the PGDBG will start in the graphical mode in a pop-up window.  
L’interface graphique est utilisée par défaut. Si vous avez configuré la redirection X11, PGDBG démarre en mode graphique dans une nouvelle fenêtre.
 
[[File:Pgdbg_gui_schematic_FRN.png|thumbnail|300px|Interface graphique (cliquez pour agrandir)|left  ]]
Les éléments de l'interface graphique sont :
* barre de menus
* barre d'outils
* volet du code source
* volet des entrées sorties (I/O)
* volet de débogage.


[[File:Pgdbg_gui_schematic.png|thumbnail|300px|PGDGB in graphical mode(click for a larger image)|left  ]]
=== Barre de menus ===
As the illustration shows, the GUI is divided into several areas:
La barre de menus principale affiche ''File'', ''Edit'', ''View'', ''Connections'', ''Debug'' et ''Help''. Il est possible de naviguer avec la souris ou avec les raccourcis-clavier.
* menu bar
* main toolbar
* source window
* program I/O window
* and debug information tabs.


=== Menu bar ===
=== Barre d'outils principale ===
The main menu bar contains these menus: File, Edit, View, Connections, Debug and Help. This section describes these menus and their contents. You can navigate the menus using the mouse or the system’s mouseless modifier.
La barre d'outils principale contient plusieurs boutons et quatre listes déroulantes. La première liste ''Current Process'', montre le processus en cours, autrement dit, le fil courant. Le libellé change selon que le processus ou le fil est décrit. Quand plusieurs fils sont disponibles, cette liste sert à sélectionner le processus ou le fil qui devrait être courant.  


=== Main toolbar ===
[[File:Pgdbg-toolbar-drop-down-lists.png|thumbnail|300px|Listes déroulantes de la barre d'outils (cliquez pour agrandir)|left ]]
The debugger's main toolbar contains several buttons and four drop-down lists. The first drop-down list displays the current process or in other words, the current thread. The list’s label changes depending on whether processes or threads are described. When multiple threads are available use this drop-down list to specify which process or thread should be the current one.


[[File:Pgdbg-toolbar-drop-down-lists.png|thumbnail|300px|Drop-Down Lists on Toolbar(click for a larger image)|left  ]]
La deuxième liste ''Apply'' détermine le groupe de processus et de fils auxquels les commandes d'action s'appliquent. <br>
La troisième liste ''Display'' détermine le groupe de processus et de fils auxquels les commandes d'affichage de données s'appliquent.


The second drop-down list is labeled Apply. The selection in the Apply drop-down determines the set of processes and threads to which action commands are applied. The third drop-down list is labeled Display. The selection in the Display drop-down determines the set of processes and threads to which data display commands are applied.
La quatrième liste ''File'' affiche le fichier source qui contient la cible courante.


The fourth drop-down list, labeled as File, displays the source file that contains the current target location.
=== Volets du code source et des outils de débogage ===
Le volet du code source montre le code pour la session en cours. Ce volet et les onglets du volet de débogage sont des éléments ancrables; en double-cliquant dessus, vous pouvez les détacher de la fenêtre principale.


=== Source window ===
[[File:Pgdbg-source-win.png|thumbnail|300px|Le panneau montrant le code source offre des outils qui permettent de savoir comment le code est exécuté.(cliquez pour agrandir)|left  ]]
The source window (shown on the figure below) and all of the debug information tabs are dockable tabs, meaning that they can be taken apart from the main window. This can be done by double-clicking the tab. The source window shows the source code for the current session.


[[File:Pgdbg-source-win.png|thumbnail|300px|The source window contains a number of visual aids that allow you to know more about the execution of your code.(click for a larger image)|left  ]]
=== Volet des entrées/sorties du programme ===
Les résultats produits par le programme sont affichés dans ce volet. Utilisez le champ ''Input'' pour faire des entrées au programme.


=== Program I/O Window ===
=== Volet de débogage ===
Program output is displayed in the Program IO tab’s central window. Program input is entered into this tab’s Input field.
Situé au bas de la fenêtre, ce volet comporte des onglets qui servent différentes fonctions de débogage et de visualisation de l'information.


=== Debug information tab ===
= Références =
Debug information tabs take up the lower half of the debugger GUI. Each of these tabs provides a particular function or view of debug information. The following sections discuss the tabs as they appear from left-to-right in the GUI’s default configuration.
* [https://www.pgroup.com/resources/docs/17.7/x86/pgdbg-user-guide/index.htm PGI Debugger User's Guide]
* [https://www.pgroup.com/index.htm site web de PGI]

Latest revision as of 19:34, 1 November 2019

Other languages:

Description

PGDBG est un outil simple mais puissant pour le débogage d’applications parallèles MPI et OpenMP sous Linux. L’outil fait partie du paquet du compilateur PGI et est configuré pour OpenMP avec fils parallèles. Il peut être utilisé en mode graphique avec redirection X11 ou en mode ligne de commande.

Un débogueur GNU comme GDB conviendra pour la plupart des programmes C, C++ ou Fortran77. Cependant, GDB ne fonctionne pas très bien avec les programmes Fortran 90/95; c’est pourquoi le Portland Group a développé pgdbg.

Guide de démarrage

Le travail avec PFDBG s’effectue généralement en deux étapes :

  1. compilation : le code est compilé (avec l’option -g pour obtenir les symboles de débogage);
  2. exécution et débogage : le code est exécuté et les résultats sont analysés.

Le débogage peut se faire en mode ligne de commande ou en mode graphique.


Modules d’environnement

Il faut d’abord charger le module pour le paquet PGI. Pour connaître les versions disponibles pour les modules du compilateur, de MPI et de CUDA que vous avez chargés, lancez module avail pgi. Pour connaître la liste complète des modules PGI disponibles, lancez module -r spider '.*pgi.*'. En date de décembre 2018, les versions disponibles sont

  • pgi/13.10
  • pgi/17.3

Pour charger un module, lancez module load pgi/version; par exemple, pour la version 17.3, la commande est

Question.png
[name@server ~]$ module load pgi/17.3

Compilation

Avant d’être débogué, le code doit d’abord être compilé en ajoutant l’indicateur -g pour obtenir les renseignements utiles au débogage.

Question.png
[name@server ~]$ pgcc -g program.c -o program

Exécution et débogage en mode ligne de commande

Une fois le code compilé avec les options appropriées, lancez PGDBG pour effectuer l’analyse. Par défaut, l’affichage se fait par l’interface graphique. Si toutefois vous ne voulez pas utiliser cette interface ou que vous n’avez pas la redirection X11, vous pouvez travailler en mode ligne de commande en ajoutant l’option text au lancement de PDGDB.

En mode ligne de commande, une invite est affichée.

Question.png
[name@server ~]$ pgdbg -text program 
PGDBG 17.3-0 x86-64 (Cluster, 256 Process)
PGI Compilers and Tools
Copyright (c) 2017, NVIDIA CORPORATION.  All rights reserved.
Loaded: /home/user/program
pgdbg>

À l’invite, lancez la commande run.

Question.png
[name@server ~]$ 
pgdbg> run

En cours d’exécution du programme, PGDBG s’attache automatiquement aux fils et décrit chacun d’eux au fur et à mesure qu’ils sont créés. En cours de débogage, PGDBG travaille sur un seul fil à la fois, le fil courant. La commande thread sert à sélectionner le fil courant, la commande threads liste les fils utilisés à ce moment par un programme actif.

Question.png
[name@server ~]$ pgdbg > threads
0  ID PID    STATE      SIGNAL      LOCATION
   3  18399  Stopped    SIGTRAP     main line: 31 in "omp.c" address: 0x80490ab
=> 2  18398  Stopped    SIGTRAP     main line: 32 in "omp.c" address: 0x80490cf
   1  18397  Stopped    SIGTRAP     main line: 31 in "omp.c" address: 0x80490ab
   0  18395  Stopped    SIGTRAP     f line: 5 in "omp.c" address: 0x8048fa0

Par exemple, pour sélectionner ID 2 comme fil courant, la commande thread serait

Question.png
[name@server ~]$ pgdbg > thread 3
pgdbg > threads
0  ID PID    STATE      SIGNAL      LOCATION
=> 3  18399  Stopped    SIGTRAP     main line: 31 in "omp.c" address: 0x80490ab
   2  18398  Stopped    SIGTRAP     main line: 32 in "omp.c" address: 0x80490cf
   1  18397  Stopped    SIGTRAP     main line: 31 in "omp.c" address: 0x80490ab
   0  18395  Stopped    SIGTRAP     f line: 5 in "omp.c" address: 0x8048fa0

Exécution et débogage en mode graphique

L’interface graphique est utilisée par défaut. Si vous avez configuré la redirection X11, PGDBG démarre en mode graphique dans une nouvelle fenêtre.

Interface graphique (cliquez pour agrandir)

Les éléments de l'interface graphique sont :

  • barre de menus
  • barre d'outils
  • volet du code source
  • volet des entrées sorties (I/O)
  • volet de débogage.

Barre de menus

La barre de menus principale affiche File, Edit, View, Connections, Debug et Help. Il est possible de naviguer avec la souris ou avec les raccourcis-clavier.

Barre d'outils principale

La barre d'outils principale contient plusieurs boutons et quatre listes déroulantes. La première liste Current Process, montre le processus en cours, autrement dit, le fil courant. Le libellé change selon que le processus ou le fil est décrit. Quand plusieurs fils sont disponibles, cette liste sert à sélectionner le processus ou le fil qui devrait être courant.

Listes déroulantes de la barre d'outils (cliquez pour agrandir)

La deuxième liste Apply détermine le groupe de processus et de fils auxquels les commandes d'action s'appliquent.
La troisième liste Display détermine le groupe de processus et de fils auxquels les commandes d'affichage de données s'appliquent.

La quatrième liste File affiche le fichier source qui contient la cible courante.

Volets du code source et des outils de débogage

Le volet du code source montre le code pour la session en cours. Ce volet et les onglets du volet de débogage sont des éléments ancrables; en double-cliquant dessus, vous pouvez les détacher de la fenêtre principale.

Le panneau montrant le code source offre des outils qui permettent de savoir comment le code est exécuté.(cliquez pour agrandir)

Volet des entrées/sorties du programme

Les résultats produits par le programme sont affichés dans ce volet. Utilisez le champ Input pour faire des entrées au programme.

Volet de débogage

Situé au bas de la fenêtre, ce volet comporte des onglets qui servent différentes fonctions de débogage et de visualisation de l'information.

Références