এক্সকোড ক্র্যাশ ঘটায় এমন লাইনটি দেখায় না


126

প্রতিবার আমার অ্যাপ্লিকেশনটি ক্রোড় করে যখনই Xcode মুখ্য () ফাংশনে ইউআইএআইপিকেশন মেইন () কলটিকে হাইলাইট করে যা ক্র্যাশ করেছে। কিছু ক্ষেত্রে যেগুলি স্বাভাবিক থাকত (উদাহরণস্বরূপ পৃথকীকরণ ত্রুটি) তবে আমি যে ক্র্যাশটি মোকাবিলার চেষ্টা করছি সেটি হ'ল কনসোলে লগ ইন করা বিশদ তথ্য সহ একটি সাধারণ সিগাব্রিট:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: Date)'

এক্সকোডটি পুরানো এসডিকেগুলির সাথে ঠিক লাইনটি দেখাতো তবে আমি Xocde 4.2 এ আপগ্রেড করেছি যা পরিবর্তিত হয়েছে। এটি অত্যন্ত স্পষ্ট যে এক্সকোড সঠিকভাবে জানে যে ক্র্যাশ ঘটেছিল (বা জানতে পারে) তবে এটি এখনও প্রকৃত রেখাটি প্রদর্শন করছে না। এটির জন্য কি কোনও স্থির বা কর্মক্ষেত্র রয়েছে?


2
আপনি কি মুক্তির জন্য সংকলন করছেন? যদি তাই হয় তবে স্কিমটিকে ডিবাগে সেট করার চেষ্টা করুন।
এপ্যাটেল

এটি এমনও হতে পারে যে কোনও এক্সিবের কারণে প্রোগ্রামটি আপনার নিজস্ব উত্স কোডের বাইরে কোনও জায়গায় ক্র্যাশ হয়ে গেছে, সুতরাং কোনও ফাইল না দেখায়। "তারিখ" নামে একটি অভিধান কীটির জন্য ত্রুটিটি একটি সমস্যার বর্ণনা দেয়
এপেটেল

1
অ্যাপলের আরও পরীক্ষক নিয়োগ করা উচিত;)
আমর লটফাই

উত্তর:


301

আপনারও নিশ্চিত হওয়া উচিত যে সমস্ত ব্যতিক্রমের জন্য আপনার ব্রেকপয়েন্ট রয়েছে। এর ফলে এক্সকোডটি যেখানে ব্যতিক্রম ঘটছে সেই লাইনে থামবে। নিম্নলিখিতগুলি [এক্সকোড ৪ এ] করুন:

  1. এক্সকোডের বাম দিকে প্রজেক্ট ন্যাভিগেটরে, ব্রেকপয়েন্ট ন্যাভিগেটরে ক্লিক করুন (উপরের বোতাম বারের ডানদিকে প্রায় সমস্ত পথ। আইকনটি ফ্যাট ডান তীরের মতো দেখাচ্ছে)।

  2. নেভিগেটরের নীচে, "+" বোতামটি ক্লিক করুন।

  3. "এক্সেপশন ব্রেকপয়েন্ট যোগ করুন" ক্লিক করুন।

  4. একটি নতুন ব্রেকপয়েন্ট তৈরি করা হবে। এটি প্রয়োজনীয় হিসাবে কনফিগার করা উচিত তবে আপনি এর আচরণটি টুইঙ্ক করতে পারেন।

  5. আপনার প্রকল্প চালান এবং ব্যতিক্রম পুনরুত্পাদন।

এছাড়াও আপনি উল্লেখ করেছেন যে আপনি কয়েকটি তৃতীয় পক্ষের লাইব্রেরি / ফ্রেমওয়ার্কের সাথে লিঙ্ক করেছেন। যদি এই ফ্রেমওয়ার্কগুলির মধ্যে ব্যতিক্রম ঘটে থাকে তবে কোডটি সংকলিত হওয়ার কারণে আপনার পক্ষে একটি কঠিন সময় কাটাতে হবে এবং এক্সকোড আসলে আপনাকে এই লাইনটি প্রদর্শন করতে পারে না যা ব্যতিক্রম ঘটায়। যদি এটি হয় এবং আপনি যদি নিশ্চিত হন যে আপনি লাইব্রেরিগুলি সঠিকভাবে ব্যবহার করছেন, তবে আপনার সেই লাইব্রেরির রক্ষণাবেক্ষণকারীদের কাছে একটি বাগ রিপোর্ট ফাইল করা উচিত।


4
আমি একজন নুব এবং এটি ছাড়া প্রায় এক মাস বিকাশ ... এটি আমার জীবনকে বদলে দেয়।
জনি বার্গার

4
আমার বন্ধুটি কেবলমাত্র এই পোস্টটি আপভোট করার জন্য একটি এসও অ্যাকাউন্টের জন্য নিবন্ধভুক্ত।
অ্যালেক্স স্পেন্সার

1
এটিকে আমার বইয়ের আপেল অংশের অর্ধেক
অ্যাসিং বলা হয়

1
এটি কি তবে এখনও এটি খুঁজে
পাচ্ছে

1
এটি কাজ করে, তবে খারাপ দিকটি এটি আর ডিবাগ কনসোলে ব্যতিক্রমের বিবরণ আউটপুট করে না। সুতরাং আমি এই ব্রেকপয়েন্টটি বন্ধ করে দিতে পারি, এবং ব্যতিক্রমের বিশদ এবং ট্রেস দেখতে পারি তবে তা কোথায় ঘটেছে তা নয় বা এটি কোথায় ঘটেছে তা দেখার জন্য, তবে কেন নয় turn দু'জনকে কীভাবে থাকতে হবে কেউ জানেন?
গ্যাব্রিয়েল জেনসেন

27

কেবল এই স্ট্যাক ওভারফ্লো উত্তরের নির্দেশাবলী অনুসরণ করুন:

জম্বি সক্ষম করুন

মূলত, আপনার কেবল "জম্বি সক্ষম করুন" প্রয়োজন। তারপরে এক্সকোডের যে কোনও লাইনে সমস্যা সৃষ্টি হওয়া উচিত break

এখানে চিত্র বর্ণনা লিখুন

(এটি একেবারে মর্মান্তিক যে, এমনকি 2017 সালে, এক্সকোড এখনও ডিফল্টরূপে এটি বন্ধ করে দিয়েছে you সমস্যাটি দেখা দিয়েছে এমন লাইনটি আপনি কেন দেখতে চাইবেন না ? এবং " জেমোবিজ অবজেক্টস সক্ষম করুন " ?! সত্যই! Xcode লেখকরা কি সত্যই সত্যই কি? বিশ্বাস করুন যে এটি একটি দরকারী নাম, যা নতুন বিকাশকারীদের জন্য যে কোনও ধরণের ধারণা তৈরি করবে? অ্যাপ স্টোরটিতে বছরের পর বছর এক্সকোডের রেটিং কতটা দরিদ্র তা হতাশ করছে ing কেউ শুনছে না ...)


6
Xcode হ'ল আমি এখন পর্যন্ত ব্যবহার করা সবচেয়ে খারাপ প্রোগ্রামিং পরিবেশ।
শিক্ষার্থী

যা আমি আকর্ষণীয় মনে করি (ভিজ্যুয়াল স্টুডিও বিকাশকারী হিসাবে) তা হ'ল আমি কয়টি এক্সকোড বিকাশকারীকে পেয়েছি, যারা জোর দিয়েছিলেন যে তারা এখন পর্যন্ত ব্যবহার করেছেন সেরা পরিবেশ environment যৌক্তিক, বন্ধুত্বপূর্ণ এবং সহায়ক .. তবে কয়েকটি তর্ক দিয়ে। এখনও, 2019 সালের নভেম্বরে, এক্সকোডের একটি অ্যাপ স্টোরের রেটিং রয়েছে 3.1, বেশিরভাগ লোকেরা এটিকে 5-তারা বা 1-তারা দিয়েছে। কেউ শুনছে না ....
মাইক গ্লেডহিল

9

সম্পাদনা বর্তমান স্কিম এবং সক্ষম NSZombieEnabled, MallocStackLoggingএবং guard malloc। তারপরে, যখন আপনার অ্যাপ্লিকেশন ক্রাশ হবে তখন এটিকে জিডিবি কনসোলে টাইপ করুন:

(gdb) info malloc-history 0x543216

প্রতিস্থাপন করা 0x543216যে আইটেমটির কারণ ঘটেছে তার ঠিকানাটি করুন NSInvalidArgumentExceptionএবং এটি আপনাকে কোডের রেখাগুলি ক্র্যাশ করে যা ক্র্যাশ ঘটাচ্ছে তা দেখিয়ে আপনাকে আরও অনেক কার্যকর স্ট্যাক ট্রেস দেওয়া উচিত।


1
আমি এটি চেষ্টা করেছিলাম এবং ত্রুটিটি ছুঁড়ে ফেলা হয়েছিল: 'তথ্য' কোনও বৈধ আদেশ নয়। কোন পরামর্শ?
আচি

@ এলিগ্রিগরি নিশ্চিত করুন যে আপনার ডিবাগারটি জিডিবিতে সেট করা আছে এবং ডিফল্ট এলএলডিবি নয়। আপনি এটিকে রান বিভাগের অধীনে সম্পাদনা প্রকল্পের মেনুতে পরিবর্তন করতে পারেন।
chown

2

আমি এই আচরণটি ভারি অপ্টিমাইজড কোডে দেখেছি; আপনার টার্গেটের অপ্টিমাইজেশন স্তর এবং তৃতীয় পক্ষের libs এর চেক করা, কৌতুক করা সাহায্য করতে পারে। (এলএলভিএম 3.0 অপ্টিমাইজেশন স্তর সেটিং)

আপনি কি ডিবাগ প্রতীক তৈরি করছেন?


একমত। আপনি যদি ডিবাগ করার চেষ্টা করছেন তবে আপনার বিল্ড সেটিংসে অপ্টিমাইজেশন স্তরটি 0 (কোনও অপ্টিমাইজেশন নয়) সেট করা দরকার।
কার্টার

1

সীমাবদ্ধতার বাইরে সূচকের ক্র্যাশ উত্পন্ন করার জন্য আমি কোড লিখেছিলাম। নীচে নিক্ষেপ ব্যতিক্রম হয়।

2017-01-07 04:02:57.606 testABC[1694:52966] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSSingleObjectArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010e85cd4b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x000000010e2be21e objc_exception_throw + 48
    2   CoreFoundation                      0x000000010e8b5c2f -[__NSSingleObjectArrayI objectAtIndex:] + 111
    3   testABC                             0x000000010dce962d -[ViewController ComplexFunction] + 61
    4   testABC                             0x000000010dce95db -[ViewController thirdFunction] + 43
    5   testABC                             0x000000010dce959b -[ViewController secondFunction] + 43
    6   testABC                             0x000000010dce955b -[ViewController firstFinction] + 43
    7   testABC                             0x000000010dce96c2 -[ViewController viewDidAppear:] + 50
    8   UIKit                               0x000000010ee28a6c -[UIViewController _setViewAppearState:isAnimating:] + 945
    9   UIKit                               0x000000010ee2b7da __64-[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:]_block_invoke + 42
    10  UIKit                               0x000000010ee29ac4 -[UIViewController _executeAfterAppearanceBlock] + 86
    11  UIKit                               0x000000010ec8d77c _runAfterCACommitDeferredBlocks + 653
    12  UIKit                               0x000000010ec7a273 _cleanUpAfterCAFlushAndRunDeferredBlocks + 566
    13  UIKit                               0x000000010ec9d757 __84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invoke_2 + 194
    14  CoreFoundation                      0x000000010e8016ac __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    15  CoreFoundation                      0x000000010e7e66f4 __CFRunLoopDoBlocks + 356
    16  CoreFoundation                      0x000000010e7e5e65 __CFRunLoopRun + 901
    17  CoreFoundation                      0x000000010e7e5884 CFRunLoopRunSpecific + 420
    18  GraphicsServices                    0x00000001126d9a6f GSEventRunModal + 161
    19  UIKit                               0x000000010ec80c68 UIApplicationMain + 159
    20  testABC                             0x000000010dce99df main + 111
    21  libdyld.dylib                       0x000000011174968d start + 1
    22  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

আপনি যদি সাবধানে পড়েন First Throw call stack

0   CoreFoundation              0x000000010e85cd4b __exceptionPreprocess + 171
1   libobjc.A.dylib             0x000000010e2be21e objc_exception_throw + 48

0 and 1 ক্র্যাশ পরে সিস্টেম প্রক্রিয়া।

 2   CoreFoundation             0x000000010e8b5c2f -[__NSSingleObjectArrayI objectAtIndex:] + 111

2 লাইনটি যা ব্যতিক্রম ঘটায়।

3   testABC                     0x000000010dce962d -[ViewController ComplexFunction] + 61

3আপনাকে জানায় যে শ্রেণীর নাম ( ViewController) এবং ফাংশন নায়েম ( ComplexFunction) এতে ব্যতিক্রম ছুঁড়েছিল ।


4
ত্রুটি, ঠিক আছে। আপনি একেবারে ঠিক, কিন্তু এটি বন্ধুত্বপূর্ণ? যে কোনও আধুনিক (1990 এর পরে) বিকাশের পরিবেশে, যখন কোনও ব্যতিক্রম ঘটে তখন আপনাকে সেই লাইনে নিয়ে যাওয়া হয় যা সমস্যার সৃষ্টি করে। যদিও এক্সকোড ... ভাল ... আপনাকে এই জাতীয় স্ট্যাক ট্রেস দেয়। এমনকি টার্বো পাস্কেলও এই পুরানো ছিল না !!!
মাইক গ্লেডহিল

4
এটি হাস্যকর বিষয় যে "সেরা ব্যবহারকারীর অভিজ্ঞতার জন্য" যে সংস্থাটি কল্পনা করা যায় তা বুঝতে পারে না যে গত 20 বছর ধরে সমস্ত বিকাশকারী লাইন নম্বরটি দেখতে অভ্যস্ত যেখানে একটি ব্যতিক্রম ছুঁড়েছে এবং এটি এসএসএমব্লায়ারে নেই। আমি কি পাগল হয়ে যাচ্ছি? আমি আমার পুরো জীবনের সাথে কাজ করেছি প্রতিটি ভাষাই লাইন নম্বর দেয়। এমনকি সি বা সি ++।
mylovemhz
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.