Print stream Wert in gdb - C++
Ich versuche zu sehen, den Wert des Stroms (ifstream, aber es sollte funktionieren für alle Arten von streams, die ich denke).
Der Beispiel-code könnte wie folgt Aussehen:
stringstream in("One Two Three Four Five");
while(in)
cout << in;
Ich versuche zu tun, es in der folgenden Weise aber keiner von Ihnen scheint zu funktionieren:
(gdb) print in
(gdb) call cout << in
(gdb) call in.getline()
... und so weiter.
Gibt es eine Möglichkeit, den Wert zu sehen der stream???
- Ist es ein
stringstream
oder eineifstream
? Es gibt keinen Weg, um eine Datei, die Inhalte auf diese Weise!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie sicherstellen, dass Sie das Paket mit der
libstdc++
Bibliothek zusammengestellt, mit der debugging-flags.Habe ich die
libstdc++6-8-dbg
Paket installiert und nun kann ich alle anzeigen der stream-Objekt, das Daten ingdb
.Ich bekam, was ich brauchte, durch Neukompilierung alles (nicht nur ein oder zwei übersetzungseinheiten) mit
-D_GLIBCXX_DEBUG
. Dann kann ich nur tunwo
is
ist einstd::istream&
. Bisher war ich immerAuch, wenn ich nur umgebaut, eine compilation-unit, es lief, stürzte aber mit
Siehe auch: http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode_using.html#debug_mode.mit.Modus
(gdb) call 'operator<<'(_ZSt4cout, your_object)
Nicht. Die gesamte Idee von einem stream ist, dass er liest Daten, sobald Sie verfügbar sind, werden Sie von einer Festplatte, aus dem Netzwerk oder von was auch immer. Ich könnte zum Beispiel schreiben Sie eine Klasse Unterstützung von streams, die nur auf unbestimmte Zeit ausgegeben die Zeichen 'a'.
Wenn Sie dies tun wollen, sind Sie gehen zu müssen nur um zu schreiben, eine Hilfsfunktion, die in Ihrem eigenen Programm liest die gewünschten Daten aus dem stream.
stringstream
keine gewöhnliche Datei basiertifstream
!ifstream
!print in.str()
und ich bekommeCouldn't find method std::stringstream::str
. Wie kommt das? Es ist stringstream-Methode. Und wenn ich ifstrem, ich weiß:call cout << in.get()
wieder bekomme ichCouldn't find method std::ifstream::get
Haben Sie versucht
print in.str()
oder sogarprint in.str().c_str()
weil
stringstream
einstr
Methode was einestd::string
, undstring
einc_str
Methode was einechar*
ifstream
nicht eine Methode namensstr