C'è un modo per impostare un punto di interruzione condizionale su tipi non primitivi?
Sì, un modo per farlo è convertire il tipo non primitivo in uno primitivo, nel tuo caso in char*
e usa strcmp
per confrontare le stringhe.
condition 1 strcmp(myObject->myStringVar.c_str(),"foo") == 0
La risposta alla tua domanda che hai posto è sì ... nel caso generale funziona per classi e funzioni arbitrarie e funzioni membro di classe. Non sei bloccato con il test dei tipi primitivi. Overload dei membri della classe, come operator==
, dovrebbe funzionare.
Ma immagino che il problema con questo caso abbia a che fare con il operator==
per std::string che è un sovraccarico di operatori basati su modelli globali :
http://www.cplusplus.com/reference/string/operators/
Quindi le dichiarazioni sono come:
template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT,traits,Allocator>& rhs,
const charT* lhs );
Non sarei sorpreso se gdb non sapesse come collegare i punti per te.
Nota che oltre a quanto detto da @ks1322, potresti rimanere nel regno C++ e usare più semplicemente std::string::compare():
condition 1 myObject->myStringVar.compare("foo") == 0