ম্যাকে অ্যাপ ক্র্যাশ সাধারণত খুবই বিরল। কিন্তু যখন তারা ঘটবে, আপনি তাদের কারণ ট্রেস করতে চাইতে পারেন। এবং আপনি যদি একজন বিকাশকারী হন তবে আপনার অ্যাপটি কেন ক্র্যাশ হচ্ছে তা আপনাকে বুঝতে হবে। এখানে কিভাবে macOS ক্র্যাশ রিপোর্ট পড়তে হয় এবং ক্রিপ্টিক ভাষার মাধ্যমে সাজাতে হয়।
ক্র্যাশ রিপোর্ট খোলা হচ্ছে
যখন একটি অ্যাপ আপনার Mac এ ক্র্যাশ হয়, এটি স্বয়ংক্রিয়ভাবে একটি ক্র্যাশ রিপোর্ট তৈরি করে। আপনি এটি ক্র্যাশের পরে একটি সতর্কীকরণ ডায়ালগের সাথে উপস্থিত দেখতে পাবেন "[অ্যাপ] অপ্রত্যাশিতভাবে বন্ধ হয়ে গেছে৷ " সেই ক্র্যাশ রিপোর্টটি "রিপোর্ট …" বোতামে ক্লিক করে সেই উইন্ডোতে অবিলম্বে পড়ার জন্য উপলব্ধ। ক্র্যাশ রিপোর্ট কনসোল অ্যাপেও পাওয়া যাবে।
1. স্পটলাইটে "কনসোল" টাইপ করে বা "অ্যাপ্লিকেশন -> ইউটিলিটিস -> কনসোল.অ্যাপ" এ নেভিগেট করে কনসোল অ্যাপ্লিকেশনটি খুলুন৷
2. বাম মেনুতে "ব্যবহারকারীর প্রতিবেদন" এ ক্লিক করুন, তারপরে আপনি যে ক্র্যাশ রিপোর্ট দেখতে চান তাতে ক্লিক করুন৷ এই সমস্ত ফাইল “.crash”-এ শেষ হবে এবং শিরোনামে তারিখ এবং ক্র্যাশ হওয়া অ্যাপ্লিকেশন অন্তর্ভুক্ত করবে। ক্র্যাশ রিপোর্টের বিশদ বিবরণ ডানদিকের ফলকে পাওয়া যায়৷
৷
macOS ক্র্যাশ রিপোর্ট পড়া
আসুন ক্র্যাশ রিপোর্টটি উপরে থেকে নীচে নেভিগেট করি।
কি ক্র্যাশ হয়েছে?
ক্র্যাশ রিপোর্টের প্রথম অংশ আপনাকে বলে যে কি "প্রক্রিয়া" বা অ্যাপ্লিকেশন ক্র্যাশ হয়েছে৷ গড় সমস্যা সমাধানকারীর জন্য সবচেয়ে গুরুত্বপূর্ণ অংশ হল প্রক্রিয়ার নাম।
Process: aText [11473] Path: /Applications/aText.app/Contents/MacOS/aText Identifier: com.trankynam.aText Version: 2.19 (62) Code Type: X86-64 (Native) Parent Process: ??? [1] Responsible: aText [11473] User ID: 501
এটি কখন ক্র্যাশ হয়েছিল?
দ্বিতীয় অংশ আমাদের জানায় কখন দুর্ঘটনা ঘটেছিল। এটি আপনার সিস্টেম সম্পর্কে সামান্য তথ্য প্রদান করে৷
Date/Time: 2018-03-15 00:58:10.552 -0400 OS Version: Mac OS X 10.12.6 (16G1036) Report Version: 12 Anonymous UUID: 6C985CFD-6975-3F30-50EB-0713315F5090 Time Awake Since Boot: 630000 seconds System Integrity Protection: enabled
ক্র্যাশের কারণ কি?
পরের অংশটি সবচেয়ে আলোকিত। অ্যাপ্লিকেশান দ্বারা প্রদত্ত "ব্যতিক্রমের ধরন" আমাদের বলে যে কী কারণে ক্র্যাশ হয়েছে৷ লগটি কোন থ্রেড ক্র্যাশ হয়েছে তাও রিপোর্ট করে:এই ক্ষেত্রে, থ্রেড 0।
Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x000040dedeadbec0 Exception Note: EXC_CORPSE_NOTIFY Termination Signal: Segmentation fault: 11 Termination Reason: Namespace SIGNAL, Code 0xb Terminating Process: exc handler [0]
অ্যাপল তাদের প্রযুক্তিগত ডকুমেন্টেশনে কিছু সাধারণ ব্যতিক্রমের ধরন তালিকাভুক্ত করে:
- খারাপ মেমরি অ্যাক্সেস (
EXC_BAD_ACCESS
/SIGSEGV
/SIGBUS
) - প্রোগ্রামটি ভুলভাবে বা একটি অবৈধ ঠিকানা দিয়ে মেমরি অ্যাক্সেস করার চেষ্টা করে। মেমরি সমস্যা ব্যাখ্যা করে একটি কোড সহ যুক্ত করা হয়েছে। - অস্বাভাবিক প্রস্থান (
EXC_CRASH
/SIGABRT
) – অস্বাভাবিক প্রস্থান, সাধারণত ধরা না পড়া C++ ব্যতিক্রমের হাতে এবংabort()
-এ কল করে - ট্রেস ট্র্যাপ (
EXC_BREAKPOINT
/SIGTRAP
) – SIGABRT-এর মতো, কিন্তু এই প্রস্থানটি সংযুক্ত ডিবাগারকে একটি ব্রেকপয়েন্টে প্রক্রিয়াটিকে বাধা দেওয়ার এবং ত্রুটি সনাক্ত করার সুযোগ দেয়৷ - অবৈধ নির্দেশ (
EXC_BAD_INSTRUCTION
/SIGILL
) – প্রক্রিয়াকৃত একটি নির্দেশ জারি করেছে যা বোঝা যায়নি বা প্রক্রিয়া করা যায়নি। - প্রস্থান করুন (
SIGQUIT
) - পর্যাপ্ত সুযোগ-সুবিধা সহ অন্য প্রক্রিয়ার মাধ্যমে প্রক্রিয়াটি বন্ধ করা হয়েছে। সাধারণত, একটি ওয়াচডগ প্রক্রিয়া একটি অসদাচরণ প্রক্রিয়া বন্ধ করে দেয়। - হত্যা (
SIGKILL
) - সিস্টেমের অনুরোধে প্রক্রিয়াটি বন্ধ করা হয়েছিল। ব্যতিক্রম ব্যাখ্যা করার জন্য একটি সমাপ্তি কোড যুক্ত করা হবে।
আমরা আমাদের ক্র্যাশ রিপোর্ট থেকে দেখতে পাচ্ছি, অ্যাপ্লিকেশনটি আনম্যাপ করা মেমরি অ্যাক্সেস করার চেষ্টা করেছে। এটি অ্যাপ্লিকেশনটিতে একটি প্রোগ্রামিং ত্রুটি বা একটি অস্বাভাবিক ব্যবহারকারীর অবস্থার কারণে হয়েছে যার ফলে অ্যাপ্লিকেশনটি মেমরিকে ভুলভাবে ম্যাপ করে৷
ক্র্যাশের দিকে কী নেতৃত্ব দেয়?
এর পরে আমরা ক্র্যাশের দিকে নিয়ে যাওয়ার একটি বিপরীত কালানুক্রমিক তালিকা দেখতে পাই। এগুলি থ্রেড দ্বারা বাছাই করা হয়, থ্রেড 0 দিয়ে শুরু হয়।
এই প্রতিবেদনে চারটি কলাম রয়েছে। প্রথমটি 0 থেকে শুরু করে বিপরীত কালানুক্রমিক ক্রমে ইভেন্টের সংখ্যা রিপোর্ট করে৷ দ্বিতীয়টি হল প্রক্রিয়াটির শনাক্তকারী৷ তৃতীয়টি মেমরিতে প্রক্রিয়াটির ঠিকানা। চতুর্থটি হল প্রোগ্রামের টাস্কের নাম।
এই "ব্যাকট্রেস" কিছুটা বিস্ময়কর হতে পারে। এটি "প্রতীকী" যার অর্থ কিছু মেমরি ঠিকানাগুলি ফাংশনের নাম বা অ্যাপ্লিকেশন টাস্ক দিয়ে প্রতিস্থাপিত হয়েছে। কখনও কখনও এটি সম্পূর্ণভাবে করা যায় না, অপাঠ্য মেমরি ঠিকানাগুলি রিপোর্টের মাধ্যমে ছড়িয়ে ছিটিয়ে থাকে৷
৷
আমরা উপরের ক্র্যাশ রিপোর্টে এটি দেখতে পাই:com.trankynam.aText
প্রতীকী হয় না। এমনকি সম্পূর্ণ প্রতীকীকরণ সহ, ব্যাকট্রেস পড়া কঠিন হতে পারে। কখনও কখনও বিকাশকারীরা অ্যাপ্লিকেশন কাজ এবং ইভেন্টগুলি সম্পর্কে দরকারী নোট অন্তর্ভুক্ত করে। অন্য সময়, সেগুলি রহস্যময় শিরোনাম বা সংখ্যাসূচক কোড। আপনি যদি প্রতীকীকরণের অর্থ করতে পারেন, আপনি কি ঘটছে তা বুঝতে সক্ষম হতে পারেন। কিন্তু এটি সমানভাবে সম্ভব যে ব্যাকট্রেস বোঝার জন্য আপনাকে নিজেই অ্যাপ্লিকেশনটি কোড করতে হবে৷
উপসংহার:এটি কি দরকারী?
আপনি যদি একজন ডেভেলপার হন, তাহলে ক্র্যাশ রিপোর্ট পড়া অপরিহার্য। এটি আপনাকে বুঝতে সাহায্য করে যে আপনার অ্যাপ্লিকেশনের কোন অংশ ক্র্যাশ হচ্ছে এবং কেন। আপনি যদি একজন ব্যবহারকারী হন তবে তারা ততটা সহায়ক নয়। কিন্তু যদি আপনার ক্র্যাশ ক্র্যাশ হয়, তাহলে ক্র্যাশ রিপোর্টগুলি আপনাকে সমস্যার সমাধান করতে বা সমস্যা সমাধানের জন্য ডেভেলপারের সাথে কাজ করতে সাহায্য করতে পারে। আপনি Google এর কাছে একটি দরকারী ত্রুটি কোড পেতে পারেন বা সঠিক তথ্য সহ প্রযুক্তি সহায়তা প্রদান করতে সক্ষম হতে পারেন৷ আপনি যদি রক্তাক্ত বিবরণ চান, আপনি অ্যাপলের ক্র্যাশ সংক্রান্ত প্রযুক্তিগত নোটে এটি সম্পর্কে সমস্ত কিছু পড়তে পারেন।