Debugging von MPI-Programm



  • Guten Abend.

    Ich möchte ein einfaches paralleles Programm debuggen. Mein Programm macht erstmal nicht viel, ich möchte jedoch p und r unter gdb ausgeben lassen.

    #include <iostream>
    #include <mpi.h>
    
    using namespace std;
    
    int main(int argc, char* argv[]) {
    	MPI::Init(argc,argv);
    	int r = MPI::COMM_WORLD.Get_rank();
    	int p = MPI::COMM_WORLD.Get_size();
    
    	if(p%2)
        		throw("Number of processes must be EVEN!\n");
    
    	MPI::Finalize();
    	return 0;
    }
    

    Nun kompiliere ich das mithilfe von

    gcc -o MPI_Debug MPI_Debug.cpp -lmpichcxx -lmpich -lstdc++ -I/usr/include/mpich
    

    da eine Kompilierung mit mpicxx und Co. aufgrund der Optimierung nicht funktioniert. Siehe Parameter mit

    mpicxx -show
    

    Versuche ich nun mein Programm zu debuggen, mtihilfe von

    mpirun -n 2 xterm -e gdb -x gdb.txt ./MPI_Debug
    

    Wobei in "gdb.txt" nur

    b main
    

    steht.

    Leider wird nach einem "run" in der gdb-Konsole und danach einem "list" nur ein Fehler wegen einer <built-in> angezeigt.

    <built-in>: Datei oder Verzeichnis nicht gefunden.
    

    Habe leider keine funktionierende Lösung gefunden, kann mir jemand bei der Nutzung eines Debuggers unter Linux helfen?

    Es liegt sehr wahrscheinlich an der Kompilierung, wenn ich jedoch mpicxx und Co. zum Kompilieren benutze, kriege ich beim "print p" immer nur "optimized out" Ausgaben, mit denen ich nichts anfangen kann.

    Vielen Dank für eure Mühen.

    Lieben Gruß
    phanlipo



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten