[C++] Debuggen gdb

Hi.
Danke erstmal für den Tip, ich werde mir demnächst mal den Umgang mit dem Debugger gdb zu eigen machen denn noch kenne ich mich damit nicht viel aus bzw. nur das was in CodeBlocks integriert ist.

Code:
(gdb) where
#0  0x7c97df51 in ntdll!RtlpNtMakeTemporaryKey ()
   from C:\WINDOWS\system32\ntdll.dll
#1  0x003d0000 in  ()
(gdb)
Hast du denn auch mit Debugging Informationen deinen (kompletten) Code kompilieren lassen? Das sieht irgendwie nicht danach aus...

Bei mir kommt:
Code:
#0  0x00007fd0435dfbcb in free () from /lib/libc.so.6
#1  0x0000000000403b8a in ~Matrix (this=0x7fff4c27f2d0) at mymath.cpp:338
#2  0x0000000000403e7d in Matrix::toTriangle (this=0x7fff4c27f410) at mymath.cpp:900
#3  0x00000000004041be in Matrix::determinant (this=0x7fff4c27f410) at mymath.cpp:946
#4  0x0000000000401c5c in main () at main.cpp:38

Du solltest deinen Matrix Destruktor evtl. so implementieren:
C++:
Matrix::~Matrix()
{
   // deallocate memory
    for (usint i = 0; i < _row; i++)
    {
        delete[] _arr[i];
    }
    delete[] _arr;
}
Ja, man muss schon ganz genau hingucken ;-)

Gruß

\edit: Da war ich wohl zu langsam -- und offenbar auch noch einfach abgekupfert...
 
Vielen Dank ihr beiden, das war ein gutes Beispiel dafür wie blind ein einzelner "Programmierer" sein kann :)
Bei Code::Blocks sind 2 Varianten Debug und Release zum kompilieren voreingestellt und bei der Debug Variante ist der Haken bei "Produce debug symbols [-g]" gesetzt also eigentlich müsste er bei mir auch den Stack so toll anzeigen wie bei euch.
Wenn ich von Hand (per Konsole) kompilieren wollte müsste ich wohl erst ein Makefile von Hand erstellen, das wäre schon ziemlich aufwändig, eigentlich müsste es ja gehn oder sind noch andere Kompilieroptionen nötig ?

Wer sich mit Matrizen auskennt bzw. mit dem Gaußalgorythmus der weiß das wenn man eine Zeile oder Spalte tauscht sich das Vorzeichen der Determinante ändert. Bei der Methode toTriangle() tausche ich eine Zeile wenn der Nenner 0 ergeben würde. Das ist ja eher eine "naive" Implementierung und hofft darauf das die zu tauschende Zeile auch nicht 0 an dieser Stelle hat. Wie könnte man das besser machen ?
Das mit dem VZ der Determinante würde ich als eigene Membervariable lösen die mit 1 initialisiert wird und dann bei der Methode determinant rechne ich mal dem VZ. Wenn eine Zeile getauscht wurde wird das VZ * -1 gerechnet.

Vielen herzlichen Dank für die Hinweise
 
Zurück