Pgdbg
This is not a complete article: This is a draft, a work in progress that is intended to be published into an article, which may or may not be ready for inclusion in the main wiki. It should not necessarily be considered factual or authoritative.
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.
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 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.
Quickstart guide[edit]
Environment modules[edit]
Before you start profiling with PGDBG, the appropriate module needs to be loaded.
PGDBG is part of the PGI compiler package, so run module avail pgi
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 module -r spider '.*pgi.*'
.
As of December 2018, these were:
- pgi/13.10
- pgi/17.3
Use module load pgi/version
to select a version; for example, to load the PGI compiler version 17.3, use
[name@server ~]$ module load pgi/17.3
Preparing your application[edit]
Switch to PGI compiler[edit]
Load the appropriate PGI compiler. For example, for PGI 17.3:
[name@server ~]$ module load pgi/17.3
Compile your code[edit]
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":
[name@server ~]$ pgcc -g program.c -o program
Execute your code[edit]
Once your code is compiled with the proper options, you execute it:
[name@server ~]$ pgdbg program arg1 arg2
If you have set the X11 forwarding then the pgdbg will start in the graphical mode in a pop-up window. If you don't have X11 forwarding, you can run pgdbg in a text mode by adding an extra option "-text" :
[name@server ~]$ pgdbg -text program arg1 arg2