2013-11-01 4 views
6

में विशिष्ट पंक्ति पर रनटाइम त्रुटि संदेश प्रदर्शित करें मैं सी/सी ++ कोड में एक्सकोड में रनटाइम के दौरान कस्टम त्रुटि संदेश प्रदर्शित करना चाहता हूं। इसका उपयोग कस्टम assert() फ़ंक्शन के लिए उदाहरण के लिए किया जा सकता है।एक्सकोड

मैं संदेश इनलाइन प्रदर्शित करने के लिए, SenTestingKit की तरह चाहते हैं:

SenTestingKit

अभी केवल एक चीज मैं क्या कर सकते हैं __builtin_trap का उपयोग सही लाइन पर रोकने के लिए है। लेकिन कोई कस्टम त्रुटि संदेश प्रदर्शित नहीं होता है।

__builtin_trap

+0

आपका प्रश्न स्पष्ट नहीं है। अधिक जानकारी या उदाहरण प्रदान करने का प्रयास करें। –

+0

@AdamBurry मैंने अपना प्रश्न अपडेट किया है। – Wojtek

+0

क्या स्थायी संदेश ठीक रहेगा? यदि ऐसा है, तो #pragma संदेश (जोर से आपका संदेश) का उपयोग करें, और SIGTRAP उठाएं या उस पंक्ति पर __builtin_trap का उपयोग करें। – xryl669

उत्तर

0

मैं xcode से परिचित नहीं हूँ, लेकिन यहाँ यह कैसे लगभग हर जगह किसी और किया है है। आपका कस्टम ज़ोर इस तरह दिखेगा:

#define MY_ASSERT(a1, a2, desc, ...) {\ 
    PrintAssertMessage(...);   \ 
    DebugBreak();     \ 
} 

खिड़कियों में वहाँ पहले से ही Win32 एपीआई में एक DebugBreak कार्य करते हैं। लिनक्स और IA32/X64 चलाने वाले अधिकांश अन्य सिस्टम में आप केवल int 3 को कॉल कर सकते हैं जो ब्रेकपॉइंट जाल है।

asm ("int 3"); 

मैंने पढ़ा है कि xcode में यह बताया गया है:

__asm {int 3} 

या

__asm__("int $3") 

या

__asm__("trap") 

किसी भी मामले में यह एक ऐसा मैक्रो अक्षम कर देता है से घिरा हुआ होना चाहिए डीबग बिल्ड में साथ ही मैक्रो वें बनाता है एक ब्रेक प्वाइंट का कारण बनने के तरीके को परिभाषित करता है।

+0

यहां तक ​​कि उपयोग में आसान फ़ंक्शन ('__builtin_trap') भी है जो क्रॉसप्लेटफार्म जाल की तरह काम करता है। और सुनिश्चित करें, आप संदेशबॉक्स या कंसोल आउटपुट जोड़ सकते हैं। लेकिन यह * मूल प्रश्न का उत्तर नहीं देता है, इस प्रकार एक्सकोड में इस संदेश को इनलाइन को प्रदर्शित करना है। –