के साथ आईओएस पर __debugbreak() जैसे पुन: प्रयोज्य जोर/ब्रेकपॉइंट मैं कस्टम एसेट मैक्रो (जो assert.h के समान है) को लागू करने की कोशिश कर रहा हूं, लेकिन मैं प्राप्त करने और जोर देने के बाद निष्पादन जारी रखने में सक्षम होना चाहता हूं।एमएस कंपाइलर
उदाहरण के लिए, ऐसे ही एक ASSERT
कार्यान्वयन हो सकता है:
#define ASSERT(expr) ((void)((!!(expr)) || (__debugbreak(), 0)))
__debugbreak माइक्रोसॉफ्ट compilers में एक आंतरिक समारोह है कि सॉफ्टवेयर ब्रेकपाइंट सम्मिलित करता है, 86 में _asm int 3
के बराबर है। आईओएस के लिए __debugbreak को लागू करने के विभिन्न तरीके हैं:
__asm__("int $3");
x86 के लिए। नियमित हाथ के लिए__asm__("bkpt #0");
।- arm64 के लिए
__asm__("brk #0");
- __builtin_trap()
raise(SIGTRAP)
लेकिन उन सभी के साथ जब मेरे ज़ोर हिट मैं बस पर कदम नहीं कर सकते हैं और जिस तरह से मैं जब दृश्य स्टूडियो के साथ काम कर सकते हैं जारी रखने के लिए; जब मेरे आईओएस में कुछ जोर देता है तो यह जोर से अटक जाता है और मेरे पास समाप्त करने के अलावा कोई विकल्प नहीं है, मैं निर्देशक पॉइंटर को मैन्युअल रूप से भी नहीं ले जा सकता और जोर से नहीं छोड़ सकता।
क्या आईओएस पर आवेषण लागू करना संभव है जो डीबगर में टूट जाएगा और फिर भी मुझे निष्पादन जारी रखने की अनुमति देगा?
__asm __ ("int $ 3"); मेरे लिए ठीक काम करता है – Spads
@Spads 'int $ 3' सिम्युलेटर में केवल इसलिए काम करता है क्योंकि यह x86 है, हाथ नहीं। – Pavel
उचित बिंदु। इसे आईफोन पर नहीं देखा। – Spads