Existuje nějaký způsob, jak bych mohl nastavit podmíněný bod přerušení pro neprimitivní typy?
Ano, jedním ze způsobů, jak to udělat, je převést neprimitivní typ na primitivní, ve vašem případě na char*
a použijte strcmp
pro porovnání řetězců.
condition 1 strcmp(myObject->myStringVar.c_str(),"foo") == 0
Odpověď na vaši otázku, kterou jste položili, je ano...v obecném případě to funguje pro libovolné třídy a funkce a funkce členů třídy. Nezůstanete v testování primitivních typů. Přetížení členů třídy, například operator==
, mělo by fungovat.
Ale předpokládám, že problém s tímto případem souvisí s operator==
protože std::string je přetížení globálního šablonovaného operátora :
http://www.cplusplus.com/reference/string/operators/
Takže deklarace jsou jako:
template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT,traits,Allocator>& rhs,
const charT* lhs );
Nepřekvapilo by mě, kdyby gdb nevěděl, jak to za vás spojit.
Všimněte si, že kromě toho, co řekl @ks1322, můžete zůstat v oblasti C++ a jednodušeji použít std::string::compare():
condition 1 myObject->myStringVar.compare("foo") == 0