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önntencondition 1 myObject->myStringVar.compare("foo") == 0