Ist es möglich, einen bedingten Haltepunkt in GDB zu setzen, in dem der Bedingungsausdruck Objekte beliebiger Klassen enthält?
Ich muss einen Haltepunkt innerhalb einer Funktion setzen, wo die Bedingung überprüft, ob eine Mitglieds-String-Variable eines Objekts gleich "foo" sagen kann. So etwas wie:
%Vor%Aber es funktioniert nicht. Erlaubt GDB nur bedingte Haltepunkte für primitive und char * -Typen? Gibt es eine Möglichkeit, einen bedingten Haltepunkt für nicht-primitive Typen festzulegen?
Die Antwort auf Ihre Frage lautet ja ... im allgemeinen Fall funktioniert es für beliebige Klassen und Funktionen und Klassenmemberfunktionen. Sie sind nicht damit beschäftigt, primitive Typen zu testen. Überladungen von Klassenmitgliedern, wie operator==
, sollten funktionieren.
Aber die Standard Library ist ziemlich verrückt. Ich wette, das Problem mit diesem Fall hat mit operator==
zu tun, da es sich bei std :: string um eine globale Template-Überladung handelt:
So sind die Deklarationen wie folgt:
%Vor%Ich habe oft Probleme mit gdb ... und ich wäre nicht überrascht, wenn es nicht wüsste, was ich davon halten soll!
Beachten Sie, dass Sie zusätzlich zu dem, was ks1322 sagte, im C ++ - Bereich bleiben und einfach std :: string :: compare () :
%Vor%