क्या प्रोग्राम को ब्रेकपॉइंट सक्षम करने का एक तरीका है? आम तौर पर मैं एक ब्रेकपॉइंट की स्थिति का उपयोग करता हूं, लेकिन मुझे एक प्रतीकात्मक ब्रेकपॉइंट का उपयोग करने की आवश्यकता है।
विशेष रूप से, कुछ मेरे UIScrollView के contentOffset
कॉल को scrollToIndexPath
और reloadData
के बीच कॉल में बदल रहा है। मैं scrollToIndexPath
कॉल के बाद केवल प्रतीकात्मक विराम बिंदु को सक्षम करना चाहूंगा।
2 जवाब
जिम इंगम का जवाब x86 सिस्टम पर काम करता है। एक आईओएस डिवाइस के लिए, मैं प्रोग्राम को ब्रेकपॉइंट बनाने के लिए इस उत्तर में वर्णित विधि का उपयोग करने में सक्षम था। लाइन लगाना
asm("svc 0");
XCode में निम्न निर्देश पर रुकने के लिए डिबगर का कारण बनता है।
दिलचस्प बात यह है कि यदि आप XCode से कनेक्ट नहीं हैं तो प्रोग्राम सामान्य रूप से निष्पादित होता है।
आप __builtin_trap () का उपयोग करके ऐसा कर सकते हैं। X86 सिस्टम पर, आपको जाल को मारने के बाद पीसी को मैन्युअल रूप से समायोजित करना होगा। लेकिन ऐसा करना बहुत आसान है, और कभी-कभी उपयोगी होता है यदि आपके पास कोड है जो बहुत हिट हो जाता है और आपको केवल कुछ जटिल परिस्थितियों में फंसने की आवश्यकता होती है। कुछ इस तरह:
> lldb trapit
(lldb) target create "trapit"
Current executable set to 'trapit' (x86_64).
(lldb) run
Process 63363 launched: '/private/tmp/trapit' (x86_64)
About to trap.
Process 63363 stopped
* thread #1: tid = 0x2054b7, function: main , stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
frame #0: 0x0000000100000f4d trapit`main at trapit.c:6
3 int main()
4 {
5 printf ("About to trap.\n");
-> 6 __builtin_trap();
7 printf("Trapped.\n");
8 }
(lldb) dis -f
trapit`main:
0x100000f30 <+0>: pushq %rbp
0x100000f31 <+1>: movq %rsp, %rbp
0x100000f34 <+4>: subq $0x10, %rsp
0x100000f38 <+8>: leaq 0x47(%rip), %rdi ; "About to trap.\n"
0x100000f3f <+15>: movb $0x0, %al
0x100000f41 <+17>: callq 0x100000f66 ; symbol stub for: printf
0x100000f46 <+22>: leaq 0x49(%rip), %rdi ; "Trapped.\n"
-> 0x100000f4d <+29>: ud2
0x100000f4f <+31>: movl %eax, -0x4(%rbp)
0x100000f52 <+34>: movb $0x0, %al
0x100000f54 <+36>: callq 0x100000f66 ; symbol stub for: printf
0x100000f59 <+41>: xorl %ecx, %ecx
0x100000f5b <+43>: movl %eax, -0x8(%rbp)
0x100000f5e <+46>: movl %ecx, %eax
0x100000f60 <+48>: addq $0x10, %rsp
0x100000f64 <+52>: popq %rbp
0x100000f65 <+53>: retq
(lldb) reg write pc 0x100000f4f
(lldb) c
Process 63363 resuming
Trapped.
Process 63363 exited with status = 0 (0x00000000)
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
ios
iOS, Apple iPhone, iPod टच और iPad पर चलने वाला मोबाइल ऑपरेटिंग सिस्टम है। IOS प्लेटफॉर्म पर प्रोग्रामिंग से संबंधित प्रश्नों के लिए इस टैग [ios] का उपयोग करें। उन प्रोग्रामिंग भाषाओं के लिए विशिष्ट मुद्दों के लिए संबंधित टैग [उद्देश्य-सी] और [स्विफ्ट] का उपयोग करें।