¿Hay alguna forma de establecer un punto de interrupción condicional en tipos no primitivos?
Sí, una forma de hacerlo es convertir un tipo no primitivo a uno primitivo, en su caso a char*
y usa strcmp
para comparar cadenas.
condition 1 strcmp(myObject->myStringVar.c_str(),"foo") == 0
La respuesta a su pregunta que hizo es sí ... en el caso general, funciona para clases y funciones arbitrarias, y funciones de miembros de clase. No está obligado a probar tipos primitivos. Sobrecargas de miembros de clase, como operator==
, debería funcionar.
Pero supongo que el problema con este caso tiene que ver con el operator==
para std::string siendo una sobrecarga de operador con plantilla global :
http://www.cplusplus.com/reference/string/operators/
Así que las declaraciones son como:
template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT,traits,Allocator>& rhs,
const charT* lhs );
No me sorprendería si gdb no supiera cómo conectar los puntos por ti.
Tenga en cuenta que además de lo que dijo @ ks1322, puede permanecer en el ámbito de C++ y más simplemente usar std::string::compare():
condition 1 myObject->myStringVar.compare("foo") == 0