2012-05-29 16 views
8

क्या जीडीबी में एक सशर्त ब्रेकपॉइंट सेट करना संभव है जहां स्थिति अभिव्यक्ति में मनमाना वर्ग प्रकार की वस्तुएं होती हैं?मनमाना प्रकारों पर जीडीबी सशर्त ब्रेकपॉइंट

मुझे किसी फ़ंक्शन के अंदर ब्रेकपॉइंट सेट करने की आवश्यकता है जहां स्थिति जांच करेगी कि किसी ऑब्जेक्ट का सदस्य स्ट्रिंग वेरिएबल "foo" कहने के बराबर है या नहीं। तो, कुछ ऐसा:

condition 1 myObject->myStringVar == "foo" 

लेकिन यह काम नहीं कर रहा है। क्या जीडीबी केवल आदिम और चार * प्रकारों पर सशर्त ब्रेकपॉइंट्स की अनुमति देता है? क्या कोई तरीका है कि मैं गैर-आदिम प्रकारों पर एक सशर्त ब्रेकपॉइंट सेट कर सकता हूं?

+0

MSVC (नहीं वास्तव में एक दो प्रतियों में संबंधित/एक ही बात नहीं, बस की संभावना ही की वजह से मुद्दा ..): http://stackoverflow.com/questions/1740858/how-to-create-conditional-breakpoint-with-stdstring – HostileFork

उत्तर

8

क्या कोई तरीका है कि मैं गैर-आदिम प्रकारों पर एक सशर्त ब्रेकपॉइंट सेट कर सकता हूं?

हाँ, एक तरह से यह करने के लिए char* को, आदिम एक करने के लिए गैर आदिम प्रकार परिवर्तित करने के लिए अपने मामले में, और strcmp का उपयोग तार तुलना करने के लिए है।

condition 1 strcmp(myObject->myStringVar.c_str(),"foo") == 0 
5

आपके प्रश्न का उत्तर हाँ है ... सामान्य स्थिति में यह मनमाने ढंग से कक्षाओं और कार्यों, और वर्ग सदस्य कार्यों के लिए काम करता है। आप आदिम प्रकार के परीक्षण के साथ अटक नहीं गए हैं। कक्षा सदस्य अधिभार, जैसे operator==, काम करना चाहिए।

लेकिन मानक पुस्तकालय बहुत पागल है। मुझे यकीन है कि इस मामले के साथ समस्या यह std :: स्ट्रिंग एक वैश्विक टेम्प्लेटेड ऑपरेटर अधिभार होने के लिए operator== के साथ क्या करना है:

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 कहा के अलावा, आप सी ++ दायरे में रह सकता है और अधिक बस का उपयोग std::string::compare():

condition 1 myObject->myStringVar.compare("foo") == 0 
संबंधित मुद्दे