Skip to content

Compatibility with MPI #193

Open
Open
@YvanFournier

Description

@YvanFournier
Describe the issue

I would be interested in using gdbgui to debug multiple processes started with MPI.
This is similar to closed issue #183, to which I added the same comment but might not be visible.

Steps to replicate

In a terminal:
mpiexec -n <# processes> gdbgui <executable_name> -e gdb -x <gdb_commands_file>
or:
mpiexec -n <# processes> <wrapper> <arguments>
In which the wrapper can optionnaly run gdbgui with a different (random) free port.

Describe your environment
  • Operating system and version: Linux (any distribution)
  • gdbgui version (gdbgui -v): 0.11.3.1
  • gdb version (gdb -v): 8.1
  • browser: Firefox (60)
  • python packages (pip freeze): Python 3.6 + virtualenv
Description of the desired feauture

MPI usually launches multiple processes, either on a single host or multiple ones, and usually provides slightly different environment variable values to each process so they can determine their own rank. Also, it must be mentioned that when restarting processes, the whole set of processes must be relaunched together (usually using an "mpiexec" or similar command), so processes cannot be restarted independently within a debugger).

I tried launching different gdbgui instances with different port numbers (before reading this issue), but it seems when 2 gdbgui instances are launched, the second is killed even when not using the same port number.

So using multiple tabs is intersesting, but in this case how can I connect to the correct process ? The issue is not the simply possibility os doing so (using gdb attach), but the possibility of automating it (so as to run and attach multiple processes frow a wrapper script).

For additional information, the case I am interested in is mainly debugging on localhost (for HPC environments with massive parallelism, having many windows or tabs become unworkable, so more specialized debuggers such as DDT or TotalView become necessary, though attaching to a few select processes remains very useful).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions