<ブロック引用>
Linux
非プリミティブ型に条件付きブレークポイントを設定する方法はありますか?
はい、それを行う1つの方法は、非プリミティブ型をプリミティブ型に変換することです。あなたの場合は char*
に変換します 、および strcmp
を使用 文字列を比較します。
condition 1 strcmp(myObject->myStringVar.c_str(),"foo") == 0
あなたが尋ねたあなたの質問への答えはイエスです...一般的なケースでは、任意のクラスと関数、およびクラスメンバー関数で機能します。プリミティブ型のテストに行き詰まっていません。 operator==
などのクラス メンバーのオーバーロード 、動作するはずです。
しかし、このケースの問題は operator==
に関係していると思います std::string が グローバルなテンプレート化された演算子のオーバーロード である場合 :
http://www.cplusplus.com/reference/string/operators/
したがって、宣言は次のようになります:
template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT,traits,Allocator>& rhs,
const charT* lhs );
gdb が点と点をつなぐ方法を知らなくても、私は驚かないでしょう。
@ks1322 が言ったことに加えて、C++ 領域に留まり、より単純に std::string::compare():を使用できることに注意してください。
condition 1 myObject->myStringVar.compare("foo") == 0