Apakah ada cara saya dapat menyetel breakpoint bersyarat pada tipe non-primitif?
Ya, salah satu cara untuk melakukannya adalah dengan mengubah tipe non-primitif menjadi tipe primitif, dalam kasus Anda menjadi char*
, dan gunakan strcmp
untuk membandingkan string.
condition 1 strcmp(myObject->myStringVar.c_str(),"foo") == 0
Jawaban atas pertanyaan Anda yang Anda tanyakan adalah ya ... dalam kasus umum ini berfungsi untuk kelas dan fungsi arbitrer, dan fungsi anggota kelas. Anda tidak terjebak dengan pengujian tipe primitif. Kelebihan anggota kelas, seperti operator==
, harus bekerja.
Tapi saya kira masalah dengan kasus ini ada hubungannya dengan operator==
untuk std::string menjadi kelebihan operator bertemplate global :
http://www.cplusplus.com/reference/string/operators/
Jadi deklarasinya seperti:
template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT,traits,Allocator>& rhs,
const charT* lhs );
Saya tidak akan terkejut jika gdb tidak tahu cara menghubungkan titik-titik itu untuk Anda.
Perhatikan bahwa selain apa yang dikatakan @ks1322, Anda dapat tetap berada di ranah C++ dan lebih mudah menggunakan std::string::compare():
condition 1 myObject->myStringVar.compare("foo") == 0