GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bedingter GDB-Haltepunkt für beliebige Typen wie C++ std::string-Gleichheit

Gibt es eine Möglichkeit, einen bedingten Haltepunkt für nicht primitive Typen zu setzen?

Ja, eine Möglichkeit, dies zu tun, besteht darin, einen nicht primitiven Typ in einen primitiven Typ umzuwandeln, in Ihrem Fall in char* , und verwenden Sie strcmp Strings zu vergleichen.

condition 1 strcmp(myObject->myStringVar.c_str(),"foo") == 0

Die Antwort auf Ihre Frage lautet ja ... im allgemeinen Fall funktioniert es für beliebige Klassen und Funktionen sowie Klassenmitgliedsfunktionen. Sie sind nicht damit beschäftigt, primitive Typen zu testen. Überladungen von Klassenmitgliedern, wie operator== , sollte funktionieren.

Aber ich vermute, dass das Problem in diesem Fall mit operator== zu tun hat denn std::string ist eine globale vorlagenbasierte Operatorüberladung :

http://www.cplusplus.com/reference/string/operators/

Die Deklarationen sind also wie folgt:

template<class charT, class traits, class Allocator>
    bool operator==(const basic_string<charT,traits,Allocator>& rhs,
                const charT* lhs );

Ich wäre nicht überrascht, wenn gdb nicht wüsste, wie man die Punkte für Sie verbindet.

Beachten Sie, dass Sie zusätzlich zu dem, was @ks1322 gesagt hat, im C++-Bereich bleiben und einfacher std::string::compare():

verwenden könnten
condition 1 myObject->myStringVar.compare("foo") == 0

Linux
  1. Seltsamer SIGSEGV-Segmentierungsfehler in der Methode std::string::assign() aus libstdc++.so.6

  2. Wie finde ich den vollständigen Pfad des C++-Linux-Programms von innen heraus?

  3. Linux-Bash, Camel-Case-String zum Trennen durch Bindestrich

  4. C++-Befehlszeilenschnittstelle

  5. Entfernen Sie alle Sonderzeichen und Groß-/Kleinschreibung aus der Zeichenfolge in Bash

Wie finde ich eine Datei, deren Name eine bestimmte Zeichenfolge wie „abcde“ enthält?

7 Beispiele für leistungsstarke Awk-Operatoren (Unäre, Binäre, Arithmetische, String-, Zuweisungs-, Bedingungs-, Reg-Ex-Awk-Operatoren)

Bedingte Kompilierung in C++ basierend auf dem Betriebssystem

Untersuchen der C/C++ Heap-Speicherstatistiken in gdb

Wie verwende ich GDB in Eclipse für C/C++-Debugging?

sys/types.h:Keine solche Datei oder Verzeichnis