mit gdb C++-std::string einsehen
-
Hallo,
hat einer eine Ahnung wie ich mit gdb C++-std::string einsehen kann?
Danke!Peanut
-
bei mir geht das mit
print std::string
Joe
-
ich bekomme:
(gdb) print modulefile $2 = {static npos = Error accessing memory address 0x8fb28bc: Bad address. (gdb)
-
Dann wird die Variable nicht initialisiert sein
denn normalerweise sieht das bei einem kleinen Testprogramm
#include <string> #include <stdio.h> void main() { std::string the_string("bla bla bla") ; }
so aus
(gdb) print the_string $2 = {static npos = 4294967295, static nilRep = {len = 0, res = 0, ref = 1, selfish = false}, dat = 0x804c340 "bla bla bla"}
Wenn so wie das aussieht zeit deine Variable in einen undefinierten Speicherbereich was das auch immer heisst es ist ein wahrscheinlich Bug bei dir.
Joe
[ Dieser Beitrag wurde am 12.06.2003 um 15:33 Uhr von JoeIntel editiert. ]
-
Ups war die falsche taste
[ Dieser Beitrag wurde am 12.06.2003 um 15:33 Uhr von JoeIntel editiert. ]
-
Scheint in meiner Umgebung nicht zu gehen:
Breakpoint 1, main () at test.cpp:4
4 std::string the_string("bla bla bla") ;
(gdb) n
5 }
(gdb) print the_string
$1 = {static npos = Error accessing memory address 0x873faf0: Bad address.
(gdb)FreeBSD:
gcc version 3.2.1 20020902 (prerelease) [FreeBSD]
GNU gdb 5.2 (FreeBSD)Schade!
-
na ja ich hab leider kein bsd hier aber kann an der speicherverwaltung von BSD liegen die schützen den Speicher mehr z.T. mehr als Linux. Ich habs jetzt gerade noch mal under cygwin getestet da ich dort eine neuere Version vom gcc + gdb habe aber es funzt auch. Schon mal als root getestet ?
Joe
-
Schon mal als root getestet ?
Ne, ne, gecoded wird nicht als root...
Mit nem freundlichen make;make install; in /usr/ports/devel/gdb53 war der gdb53 installiert und der tut jetzt folgendes
Breakpoint 1, main () at test.cpp:4
4 std::string the_string("bla bla bla") ;
(gdb) n
5 }
(gdb) print the_string
$1 = {static npos = 4294967295,
_M_dataplus = {<allocator<char>> = {<No data fields>},
_M_p = 0x807900c "bla bla bla"}, static _S_empty_rep_storage = {0, 0, 0,
0}}
(gdb)Nochmal danke! Wenn man erst weiss das es geht kann man ja auch gucken das man es ans laufen bekommt... Ich dachte er könne mit Strings nichts anfangen weil es keine Datentypen sondern Objekte sind.