Dr. Jürgen Vollmer wrote:
gibt es eine Möglichkeit valgrind so zu starten, daß wann immer valgrind einen Zugriff auf eine undefinierte Variable anmeckert, GDB gestartet wird und genau an dieser "Stelle" "stehenbleibt"?
Mit "undefiniert" meinst Du wohl "uninitialisiert", oder? Valgrind sollte Dir genau die entsprechende Stelle im Code angeben koennen, vorausgesetzt, Du compilierst mit -O0 (also ohne Optimierung). Ansonsten sind die Angaben durch valgrind ungenau. Beispiel (die Variable "i" ist hier uninitialisiert): vtest.cpp: #include <iostream> int main(void) { int i; std::cout << "i = " << i << std::endl; return(0); } $> g++ -O0 -g vtest.cpp $> valgrind a.out ==6586== Memcheck, a memory error detector. [...] ==6586== ==6586== Use of uninitialised value of size 4 [...] ==6586== by 0x8048714: main (vtest.cpp:4) Um einen gdb Prozess zu starten, musst Du valgrind mit der Option "--db-attach=yes" aufrufen. Standard ist hier "no". Wie gdb aufgerufen werden soll, kannst Du ebenfalls selbst angeben ueber weitere Optionen.
[...] Oder gibt's noch andere Möglichkeiten (z.B. innerhalb des GDB) Zurgiffe auf undefinierte variablen zu entdecken.
GCC sollte das in gewissem Umfang koennen. Dazu muss allerdings explizit die Option "-Wuninitialized" gesetzt werden, ausserdem muss hier im Gegensatz zu valgrind oben die Optimierung mindestens -O1 sein. Hier ein Beispiel der Compilierung ohne die Option und mit der Option: $> g++ -O2 vtest.cpp $> a.out i = -1209532428 $> g++ -O2 -Wuninitialized vtest.cpp vtest.cpp: In function ‘int main()’: vtest.cpp:3: warning: ‘i’ is used uninitialized in this function $> HTH, Thomson PS: Du kennst die suse-programming Mailingliste?