দুর্ভাগ্যক্রমে মাই অ্যাপ বন্ধ হয়ে গেছে। আমি কীভাবে এটি সমাধান করতে পারি?


785

আমি একটি অ্যাপ্লিকেশন বিকাশ করছি এবং আমি যতবার এটি চালাচ্ছি, আমি বার্তাটি পাই:

দুর্ভাগ্যক্রমে, মাই অ্যাপ বন্ধ হয়ে গেছে।

এটি সমাধান করার জন্য আমি কী করতে পারি?


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


22
আমি এর সাথে অনেক প্রশ্ন বন্ধ হয়ে যেতে দেখলাম। লোকেরা তাদের প্রশ্নে প্রাসঙ্গিক ডেটা পোস্ট করতে সহায়তা করার জন্য এটি একটি ভাল রেফারেন্স। তবে এটি কোনও মূল সমস্যার ডুপ্লিকেট নয় তবে মূল সমস্যাটি খননের জন্য কেবল পদ্ধতি। আমি মনে করি কেবল এই প্রশ্নের লিঙ্কটি একটি রেফারেন্স হিসাবে সরবরাহ করা এবং সদৃশ হিসাবে বন্ধ না করাই ভাল।
লাল্টো

33
আমি মনে করি ঘনিষ্ঠ ফাংশন এটির জন্য উপযুক্ত। এই প্রশ্নগুলির বেশিরভাগটি প্রাথমিক ডিবাগিং দক্ষতা সম্পর্কে অল্প জ্ঞান দেখায়। তাদের আটকে রাখার ফলে উত্তরে বর্ণিত পদ্ধতিটি ব্যবহার করে তাদের সমস্যাটি স্পষ্ট করার সুযোগ দেয়। আরও ভাল, তারা নিজেরাই সমস্যার সমাধান করতে সক্ষম হতে পারে। যদিও এই আলোচনাটি মেটা.স্ট্যাকওভারফ্লো.কমের জন্য আরও উপযুক্ত suited
nhaarman

এই প্রশ্নটি খুব অস্পষ্ট। আরও ভাল প্রশ্ন হবে '[মাইআইডিই] ব্যবহার করে আমি কীভাবে ডিবাগ করব' ত্রুটিটি দেখায় এমন একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন 'দুর্ভাগ্যক্রমে, মাই অ্যাপ বন্ধ হয়ে গেছে'
ক্রিস

7
@ ক্রিসহ্যালক্রো এই প্রশ্নোত্তরটি ডিবাগিং সম্পর্কে মোটেই নয়। এটি কীভাবে অ্যাপ ক্র্যাশগুলির মোকাবেলা করতে হবে তা অ্যান্ড্রয়েডে নতুনদের নির্দেশিকা সম্পর্কে।
nhaarman

stackoverflow.com/questions/26609734/... .. APK রূপান্তর ত্রুটি becoz multidex সক্ষম
RejoylinLokeshwaran

উত্তর:


717

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

সমস্যাটি

আপনার অ্যাপ্লিকেশনটি ছেড়ে দেওয়া হয়েছে কারণ একটি অনাবৃত RuntimeExceptionনিক্ষেপ করা হয়েছিল।
এর মধ্যে সর্বাধিক সাধারণ NullPointerException

কীভাবে সমাধান করবেন?

Stack traceযতবারই অ্যান্ড্রয়েড অ্যাপ্লিকেশন ক্রাশ হয় (বা সেই বিষয়ে কোনও জাভা অ্যাপ্লিকেশন), কনসোলে একটি লিখিত হয় (এই ক্ষেত্রে, লগক্যাট)। এই স্ট্যাক ট্রেসটিতে আপনার সমস্যা সমাধানের জন্য গুরুত্বপূর্ণ তথ্য রয়েছে।

অ্যান্ড্রয়েড স্টুডিও

অ্যান্ড্রয়েড স্টুডিওতে স্ট্যাক ট্রেস সন্ধান করা

উইন্ডোর নীচের বারে, Logcatবোতামটি ক্লিক করুন । বিকল্পভাবে, আপনি alt+ টিপতে পারেন 6। আপনার এমুলেটর বা ডিভাইসটি Devicesপ্যানেলে নির্বাচন করা হয়েছে তা নিশ্চিত করুন । এরপরে, স্ট্যাক ট্রেসটি অনুসন্ধান করার চেষ্টা করুন, যা লাল দেখানো হয়েছে। লগক্যাটে লগইন করা অনেকগুলি জিনিস থাকতে পারে, তাই আপনাকে কিছুটা স্ক্রোল করতে হতে পারে। স্ট্যাক ট্রেসটি সন্ধান করার একটি সহজ উপায় হ'ল লগক্যাটটি (ডানদিকে রিসাইকেল বিন ব্যবহার করে) সাফ করা এবং অ্যাপটিকে আবার ক্রাশ হতে দেওয়া।

আমি স্ট্যাক ট্রেস খুঁজে পেয়েছি, এখন কি?

হ্যাঁ! আপনি আপনার সমস্যা সমাধানের অর্ধেক পথ।
স্ট্যাক ট্রেস বিশ্লেষণ করে আপনাকে কেবল ঠিক কীভাবে আপনার অ্যাপ্লিকেশনটি ক্র্যাশ করেছে তা সন্ধান করতে হবে।

" একটি স্ট্যাক ট্রেস কী, এবং আমি কীভাবে এটি আমার অ্যাপ্লিকেশন ত্রুটিগুলি ডিবাগ করতে ব্যবহার করতে পারি? " তে স্ট্যাকের চিহ্নগুলি পড়ুন ?

আমি এখনও আমার সমস্যার সমাধান করতে পারি না!

যদি আপনি নিজের Exceptionএবং লাইনটি কোথায় গিয়েছিল তা খুঁজে পেয়েছেন এবং এখনও কীভাবে এটি ঠিক করবেন তা নির্ধারণ করতে না পারলে স্ট্যাকওভারফ্লোতে কোনও প্রশ্ন জিজ্ঞাসা করতে দ্বিধা করবেন না।

যথাসম্ভব সংক্ষিপ্ত হওয়ার চেষ্টা করুন: স্ট্যাক ট্রেস এবং প্রাসঙ্গিক কোড পোস্ট করুন (উদাহরণস্বরূপ কয়েকটি রেখাটি যেটি ফেলেছে তাতে Exception)।


33
আমি জানি এই পোস্টটি পুরানো: তবে আপনি যদি ইন্টেলিজ আইডিইএ ব্যবহার করেন তবে আপনি ভিতরে যেতে পারেন Android > Devices|Logcatএবং একটি নতুন ফিল্টার যুক্ত করতে পারেন ( i.imgur.com/145dtkx.png ), এবং এটির জন্য by Log Messageএখানে ফিল্টার করতে পারেন FATAL EXCEPTION( i.imgur.com/HpELhaU .png ) সুতরাং এই বাক্সে আপনি Exceptionsআপনার অ্যাপ্লিকেশন দ্বারা নিক্ষেপ করা সমস্তগুলি পড়তে পারেন । এটির সাথে আপনাকে লগক্যাটটি সাফ করার এবং আবার ক্র্যাশ করার দরকার নেই। আমি মনে করি অ্যান্ড্রয়েড স্টুডিওরও এই বিকল্প রয়েছে।
মার্কো এসিরানো

1
ফিলিপটির অ্যাপ্লিকেশন নাম ক্ষেত্রে জাভা প্যাকেজের নাম টাইপ করে ইক্লিপসে লগক্যাট ফিল্টার করা যায়।
স্টিফেন

আমি মনে করি যে মূল পয়েন্টটি ব্যতিক্রম ঘটলে ট্রেস ব্যাক একটি বোঝে। যখন কোনও ট্রেস ফিরে না পাওয়া যায় বা ব্যবহারযোগ্য না হয় তবে এফসিগুলি কিছুটা খারাপ হয় is তবে আমি মনে করি যে এই ধরণের বাগগুলি সনাক্ত / সনাক্তকরণে এই ব্যাখ্যাটি একটি দুর্দান্ত প্রথম ভূমিকা।
ডুমমাস্টেআর

4
আপনার লগকটে কিছু ত্রুটির চিহ্ন পাওয়া গেলে বিষয়গুলি সহজ হয় তবে লগক্যাটে কিছুই না থাকলে কী হয়? stackoverflow.com/questions/32455645/...
মারিয়ান Paździoch

4
সমস্যাটি হ'ল লাইনটিতে ত্রুটি থাকে না যা স্ট্যাক ট্রেস দ্বারা লিখিত এবং নির্দেশিত হয়।
হিলাল

115

আপনি ব্যবহার করতে পারেন গুগলের এডিবি টুল পেতে Logcat fileইস্যু বিশ্লেষণ করতে।

adb logcat > logcat.txt

logcat.txtফাইল খুলুন এবং আপনার অ্যাপ্লিকেশন নাম অনুসন্ধান করুন। এটি কেন ব্যর্থ হয়েছে, রেখার নম্বর, শ্রেণির নাম ইত্যাদি সম্পর্কে তথ্য থাকতে হবে


এটি দুর্দান্ত।
jvenema

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

আপনার যুক্ত করা উচিত -d, অন্যথায় লগক্যাট থেকে বেরিয়ে আসার জন্য আপনি সিটিআরটিএল-সি-তে প্রবেশ করেছেন। আমি করিadb logcat -v time -d > filename.txt
করাকুরি

37

প্রথমে আপনি পরীক্ষা করে দেখুন যে আপনার অ্যাপটি কোন পয়েন্টে ক্র্যাশ হয়েছে ( Unfortunately, MyApp has stopped.)। এর জন্য, আপনি Log.e("TAG", "Message");এই লাইনটি ব্যবহার করে আপনার অ্যাপ্লিকেশন লগকটে দেখতে পারবেন use

এরপরে, আপনি দেখতে পাচ্ছেন যে আপনার অ্যাপটি কোন পয়েন্টটি থামিয়ে দিয়েছে আপনার পক্ষে এটি সমাধান করা খুব সহজ।


28

লগ বিড়ালটিতে কেবল ত্রুটিটি পরীক্ষা করুন।

আপনি গ্রহন থেকে লগ বিড়াল বিকল্পটি পাবেন:

উইন্ডো-> প্রদর্শন দর্শন-> অন্যগুলি-> অ্যান্ড্রয়েড-> লগক্যাট

লগ বিড়ালটিতে ত্রুটি রয়েছে।

অন্যান্য বুদ্ধিমান আপনি ডিবাগ মোডে একটি অ্যাপ্লিকেশন চালিয়ে ত্রুটিটি পরীক্ষা করতে পারেন। প্রথমে এর পরে ব্রেকথপয়েন্ট সেট করুন:

প্রকল্প-> ডিবাগ হিসাবে-> অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে ডান ক্লিক করুন


27

দ্রষ্টব্য: এই উত্তরটি অ্যান্ড্রয়েড স্টুডিও ২.২.২ ব্যবহার করছে

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


আপনার অ্যাপ্লিকেশন ক্র্যাশ হওয়ার সময় প্রথম কাজটি আপনি লগগিকেটে দেখলে অ্যান্ড্রয়েড স্টুডিওর নীচে মেনুগুলির একটি তালিকা সহ একটি সরঞ্জামদণ্ড রয়েছে:

ভাবমূর্তি

"অ্যান্ড্রয়েড মনিটর" এ ক্লিক করুন (আমি উপরের চিত্রটিতে আন্ডারলাইন করা।)

এখন, আপনি এর মতো কিছু পাবেন:

ভাবমূর্তি

" Verbose" এ " " পরিবর্তন করুন " Errorএখন এটি আপনাকে লগ করা ত্রুটিগুলি কেবল প্রদর্শন করবে। এই সমস্ত ত্রুটি সম্পর্কে এখন চিন্তা করবেন না (যদি আপনি সেগুলি পেয়ে থাকেন)।

ভাবমূর্তি

ঠিক আছে. এখন, আপনার অ্যাপটি ক্রাশ করতে আপনি যা করেছিলেন তা করুন। আপনার অ্যাপ ক্রাশ হওয়ার পরে আপনার লগকটে যান log আপনার একটি নতুন ক্র্যাশ লগ পাওয়া উচিত যাতে প্রচুর পরিমাণে রয়েছে at:x.x.x: এবং Caused by: TrumpIsPresidentExceptionউদাহরণস্বরূপ। Caused by:আপনার লগকটে সেই বিবৃতিতে যান ।

ভাবমূর্তি

পরবর্তী যে Caused By:, সেখানে ব্যতিক্রম যে ঘটেছে হওয়া উচিত। আমার ক্ষেত্রে এটি একটি RuntimeExceptionএবং এর নীচে একটি লাইন থাকা উচিত যার মধ্যে নীল লিঙ্ক রয়েছে :

ভাবমূর্তি

যদি এরCaused by: নীচে কোথাও নীল পাঠ্যের একটি লাইন থাকে না, তবে অন্যটির মতো Caused by:করে দেখুন।

সেই নীল লিঙ্কটিতে ক্লিক করুন । সমস্যাটি যেখানে ঘটেছিল সেখানে আপনাকে নিয়ে যাওয়া উচিত। আমার ক্ষেত্রে, এটি এই লাইনের কারণে ছিল:

throw new RuntimeException();

সুতরাং, এখন আমি জানি কেন এটি ক্রাশ হচ্ছে। এর কারণ আমি নিজে ব্যতিক্রম ছুঁড়েছি। এটি একটি সুস্পষ্ট ত্রুটি ছিল


তবে, ধরা যাক আমি আরও একটি ত্রুটি পেয়েছি:

java.lang.NullPointerException

আমি আমার লগক্যাটটি চেক করেছি, আমি যে নীল লিঙ্কটি দিয়েছি তাতে ক্লিক করেছি এবং এটি আমাকে এখানে নিয়ে গেছে:

mTextView.setText(myString);

সুতরাং, এখন আমি ডিবাগ করতে চাই। এই স্ট্যাকওভারফ্লো প্রশ্ন অনুসারে , একটি নলপয়েন্টার এক্সসেপশন বলে যে কিছু একটা null

সুতরাং, আসুন জেনে নেওয়া যাক কি নাল । দুটি সম্ভাবনা আছে। হয় mTextViewনাল, বা myStringশূন্য হয়। mTextView.setText(mString)লাইনের আগে , আমি এই দুটি লাইন যুক্ত করব:

Log.d("AppDebug","mTextView is null: " + String.valueOf(mTextView == null);
Log.d("AppDebug","myString is null: " + String.valueOf(myString== null);

এখন, যেমন আমরা আগে করেছি (আমরা ভেরোজকে ত্রুটিতে পরিবর্তন করেছি), আমরা "ত্রুটি" পরিবর্তন করে "ডিবাগ" করতে চাই। যেহেতু আমরা ডিবাগিং করে লগ করছি। সমস্ত লগ পদ্ধতি এখানে:

Log.
  d means Debug
  e means error
  w means warning
  v means verbose
  i means information
  wtf means "What a terrible failure". This is similar to Log.e

সুতরাং, যেহেতু আমরা ব্যবহার করেছি Log.d, আমরা ডিবাগ এ যাচাই করছি। এজন্য আমরা এটিকে ডিবাগ-এ পরিবর্তন করেছি।

নোটিশের Log.dএকটি প্রথম প্যারামিটার রয়েছে, আমাদের ক্ষেত্রে "অ্যাপডিবুগ"। লগকটের উপরে-ডানদিকে "ফিল্টার নেই" ড্রপ ডাউন মেনুতে ক্লিক করুন। "ফিল্টার কনফিগারেশন সম্পাদনা করুন" নির্বাচন করুন, আপনার ফিল্টারে একটি নাম দিন এবং "লগ ট্যাগ" এ "অ্যাপ ডিবাগ" দিন। "ওকে" ক্লিক করুন। এখন, আপনার লগক্যাটটিতে দুটি লাইন দেখা উচিত:

yourPackageNameAndApp: mTextView is null: true
yourPackageNameAndApp: myString is null: false

সুতরাং এখন আমরা জানি যে এমটেক্সটভিউটি নাল।

আমি আমার কোডটি পর্যবেক্ষণ করছি, এখন আমি কিছু লক্ষ্য করছি।

আমি private TextView mTextViewআমার ক্লাসের শীর্ষে ঘোষণা করেছি। তবে, আমি এটি সংজ্ঞায়িত করছি না।

মূলত আমি আমার অনক্রিট () এ এটি করতে ভুলে গেছি:

mTextView = (TextView) findViewById(R.id.textview_id_in_xml);

সুতরাং mTextViewএটি কেন নাল, কারণ আমি আমার অ্যাপ্লিকেশনটি কী তা বলতে ভুলে গিয়েছি। সুতরাং আমি সেই লাইনটি যুক্ত করছি, আমার অ্যাপ্লিকেশনটি চালান, এবং এখন অ্যাপটি ক্রাশ হয় না।



1
এটি ভাল তথ্য, তবে স্ট্যাক ট্রেসের চিত্র ব্যবহার করা এর কার্যকারিতা হ্রাস করে - চিত্রগুলি অনুসন্ধান করা যায় না, অনুলিপি করা যায় না এবং আটকানো যায় না, পর্দার পাঠকরা বাছাই করতে পারেন না এবং পড়া আরও কঠিন difficult (আমি যাই হোক না কেন, কেবল এটি দেখিয়েছিলাম)
ইজোশুয়াস - মনিকা

1
@ জোশুয়াএস আমি ছবিটি সরবরাহ করতে বলিনি।
এবি

19

এই পপআপটি কেবল তখনই প্রদর্শিত হয় যখন আপনি আপনার কোডে মারাত্মক ব্যতিক্রম পান যা অ্যাপ্লিকেশনটির কার্য সম্পাদন বন্ধ করে দেয়। এটা কোনো ব্যতিক্রম হতে পারে NullPointerException, OutOfMemoryExceptionইত্যাদি

আপনি যদি এখনও অ্যান্ড্রয়েড স্টুডিওতে অ্যাপ্লিকেশন বিকাশ করে থাকেন তবে এটি স্ট্যাক ট্রেস পড়ার এবং অ্যাপ্লিকেশনটির কারণটি যাচাই করার দ্রুত উপায় হ'ল লগক্যাটের মাধ্যমে চেক করার সর্বোত্তম উপায় ।

যদি আপনার অ্যাপ্লিকেশনটি ইতিমধ্যে লাইভ হয় তবে আপনি লগক্যাট ব্যবহার করতে পারবেন না । সুতরাং, এর জন্য আপনি Crashlyticsযে কোনও ব্যতিক্রম ঘটে তার বাগ রিপোর্ট সরবরাহ করতে প্রয়োগ করতে পারেন ।


17

আপনার Logcatবার্তাটি পরীক্ষা করে দেখুন এবং আপনার Manifestফাইলটি দেখুন। Activity,ব্যবহারকারীর অনুমতি` সংজ্ঞা দেওয়ার মতো কিছু গায়েব থাকতে হবে should


14

আপনি এই যেকোন সরঞ্জাম ব্যবহার করতে পারেন:

  1. অ্যাডবি লগক্যাট

  2. adb logcat> logs.txt (ত্রুটিগুলি খোলার জন্য এবং অনুসন্ধান করতে আপনি সম্পাদক ব্যবহার করতে পারেন))

  3. গ্রহপ লগক্যাট (যদি গ্রহনে দৃশ্যমান না হয় তবে উইন্ডোজ-> প্রদর্শন দেখুন-> অন্য-> অ্যান্ড্রয়েড-> লগগেটে যান)

  4. অ্যান্ড্রয়েড ডিবাগ মনিটর বা অ্যান্ড্রয়েড ডিভাইস মনিটর (টাইপ কমান্ড মনিটর বা ইউআই মাধ্যমে খোলা)

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

  1. অ্যান্ড্রয়েড স্টুডিও

আমি অ্যান্ড্রয়েড ডিবাগ মনিটর ব্যবহার করার পরামর্শ দিই , এটি ভাল। কারণ অনেকগুলি লগ থাকাকালীন গ্রাহকটি স্তব্ধ হয়ে যায় এবং অ্যাডবি লগক্যাট ফিল্টার এবং সমস্ত কঠিন।


12

আপনি পরীক্ষা করতে হবে Stack trace

কিভাবে যে কি?

আপনার আইডিইতে উইন্ডোজ ফর্মটি লোগ্যাটটি পরীক্ষা করুন

আপনি যদি দেখতে না পান তবে লগক্যাট উইন্ডোজগুলি এই পথে যান এবং এটি খুলুন

window->show view->others->Android->Logcat

আপনি যদি গুগল-এপি ব্যবহার করছেন তবে এই পথে যান

adb logcat> logcat.txt


10

নীচে শো-টোস্ট () পদ্ধতিতে আপনাকে প্রসঙ্গ বা অ্যাপ্লিকেশন প্রসঙ্গে অন্য একটি প্যারামিটার পাস করতে হবে যাতে করে আপনি এটি ব্যবহার করে দেখতে পারেন।

  public void showToast(String error, Context applicationContext){
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.custom_toast, (ViewGroup)      
        findViewById(R.id.toast_root));
        TextView text = (TextView) findViewById(R.id.toast_error);
        text.setText(error);
        Toast toast = new Toast(applicationContext);
        toast.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.setView(view);
        toast.show();
}

9

আপনি যখন কোনও ফোর্স ক্লোজ (যখন অ্যাপ্লিকেশনটি থামিয়ে দেয়) এর সাথে মিলিত হয় তার জন্য আমাকে একটি প্রাথমিক লগক্যাট বিশ্লেষণ ভাগ করে নেওয়া যাক।

দস্তাবেজ

অ্যান্ড্রয়েড থেকে লগগুলি সংগ্রহ / বিশ্লেষণের প্রাথমিক সরঞ্জাম হ'ল লগক্যাট।

লগক্যাট সম্পর্কে এখানে অ্যান্ড্রয়েডের পৃষ্ঠা

আপনি যদি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করেন তবে আপনি এই লিঙ্কটিও পরীক্ষা করতে পারেন ।

ক্যাপচারিং

মূলত, আপনি নিম্নলিখিত কমান্ডটি দিয়ে ম্যানুয়ালি লগক্যাটটি ক্যাপচার করতে পারেন (বা কেবল অ্যান্ড্রয়েড স্টুডিওতে অ্যান্ড্রয়েডমনিটর উইন্ডোটি পরীক্ষা করুন):

adb logcat

কমান্ডটিতে আপনি অনেকগুলি পরামিতি যুক্ত করতে পারেন যা আপনাকে যে বার্তাটি চান তা ফিল্টার এবং প্রদর্শন করতে সহায়তা করে ... এটি ব্যক্তিগত ... আমি বার্তাটির টাইমস্ট্যাম্প পেতে সর্বদা নীচের কমান্ডটি ব্যবহার করি:

adb logcat -v time

আপনি আউটপুটটিকে কোনও ফাইলে পুনর্নির্দেশ করতে পারেন এবং এটি কোনও পাঠ্য সম্পাদককে বিশ্লেষণ করতে পারেন।

বিশ্লেষণ

যদি আপনার অ্যাপটি ক্রাশ হচ্ছে তবে আপনি এর মতো কিছু পাবেন:

07-09 08:29:13.474 21144-21144/com.example.khan.abc D/AndroidRuntime: Shutting down VM
07-09 08:29:13.475 21144-21144/com.example.khan.abc E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.khan.abc, PID: 21144
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference
     at com.example.khan.abc.AudioFragment$1.onClick(AudioFragment.java:125)
     at android.view.View.performClick(View.java:4848)
     at android.view.View$PerformClick.run(View.java:20262)
     at android.os.Handler.handleCallback(Handler.java:815)
     at android.os.Handler.dispatchMessage(Handler.java:104)
     at android.os.Looper.loop(Looper.java:194)
     at android.app.ActivityThread.main(ActivityThread.java:5631)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
07-09 08:29:15.195 21144-21144/com.example.khan.abc I/Process: Sending signal. PID: 21144 SIG: 9

লগের এই অংশটি আপনাকে প্রচুর তথ্য দেখায়:

  • যখন সমস্যাটি ঘটেছিল: 07-09 08:29:13.475

সমস্যাটি কখন ঘটেছিল তা পরীক্ষা করা গুরুত্বপূর্ণ ... আপনি লগতে বেশ কয়েকটি ত্রুটি দেখতে পেয়েছেন ... আপনার অবশ্যই নিশ্চিত হওয়া উচিত যে আপনি সঠিক বার্তাটি পরীক্ষা করছেন :)

  • কোন অ্যাপটি ক্র্যাশ করেছে: com.example.khan.abc

এইভাবে, আপনি কী অ্যাপটি ক্র্যাশ করেছেন তা জানেন (আপনি নিজের বার্তার বিষয়ে লগগুলি পরীক্ষা করছেন তা নিশ্চিত হতে)

  • কোন ত্রুটি: java.lang.NullPointerException

একটি নাল পয়েন্টার ব্যতিক্রম ত্রুটি

  • ত্রুটি সম্পর্কে বিস্তারিত তথ্য: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference

আপনি onBackPressed()কোনও FragmentActivityবস্তু থেকে পদ্ধতি কল করার চেষ্টা করেছিলেন । যাইহোক, nullআপনি যখন এটি করেছিলেন তখন সেই জিনিসটি ছিল ।

  • স্ট্যাক ট্রেস: স্ট্যাক ট্রেস আপনাকে পদ্ধতি আহ্বানের আদেশ দেখায় ... কখনও কখনও, ত্রুটি কলিং পদ্ধতিতে ঘটে (এবং ডাকা পদ্ধতিতে নয়)।

    com.example.khan.abc. অডিওফ্র্যাগমেন্ট $ 1.অনেক ক্লিক করুন (অডিওফ্র্যাগমেন্ট.জভা অনুচ্ছেদ 25)

ফাইলটিতে ত্রুটি ঘটেছে com.example.khan.abc.AudioFragment.java, onClick()লাইনের অভ্যন্তরীণ পদ্ধতি: 125(স্ট্যাকট্রেস লাইনটি দেখায় যে ত্রুটিটি ঘটেছে)

এটি দ্বারা ডাকা হয়েছিল:

at android.view.View.performClick(View.java:4848)

যা দ্বারা ডাকা হয়েছিল:

at android.view.View$PerformClick.run(View.java:20262)

যা দ্বারা ডাকা হয়েছিল:

at android.os.Handler.handleCallback(Handler.java:815)

ইত্যাদি ....

সংক্ষিপ্ত বিবরণ

এটি কেবল একটি ওভারভিউ ছিল ... সমস্ত লগ সহজ নয় ইত্যাদি ... এটি কেবল ধারণাটি ভাগ করে নেওয়া এবং আপনাকে এন্ট্রি-স্তরের তথ্য সরবরাহ করা ...

আমি আশা করি আমি আপনাকে কিছুটা সাহায্য করতে পারলাম ... শুভেচ্ছা


8

লগগ্যাট ব্যবহার করুন এবং অ্যাপটি ক্রাশ হওয়ার কারণ কী তা সন্ধান করার চেষ্টা করুন।

লোগক্যাটটি দেখতে যদি আপনি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করেন তবে ALT + 6 বা টিপুন

আপনি যদি Eclipse ব্যবহার করেন তবে উইন্ডো -> দৃষ্টিকোণটি খুলুন -> অন্যান্য - লগগ্যাট

ড্রপ ডাউন মেনু নির্বাচন ত্রুটি থেকে লগগিকেটে যান। এটিতে আপনাকে ডিবাগ করতে সহায়তা করার জন্য প্রয়োজনীয় সমস্ত তথ্য থাকবে। যদি এটি সহায়তা না করে, লোগ্যাটিকে আপনার প্রশ্নের সম্পাদনা হিসাবে পোস্ট করুন এবং কেউ আপনাকে সহায়তা করবে।


7

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


5

কোনও স্ট্যাক ট্রেস বা অন্য কোনও ত্রুটি বার্তা ছাড়াই আপনি নিজে থেকে এই ত্রুটি বার্তাটি পেতে পারেন।

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


3
আমি আগ্রহী যদি আপনি এমন একটি প্রকল্প আপলোড করতে পারেন যা এই ঘটনাটি দেখায়।
কমন্সওয়্যার

5

উন্নয়নের সময় ক্রাশ

লগগুলি পেতে এবং বিকাশের সময় তাদের বিশ্লেষণ করতে আমার পছন্দসই সরঞ্জাম লগভিউ চেষ্টা করুন । লিনাক্স চলাকালীন
চিহ্নিতকরণ ./logviewএবং কার্যকর ./lib/logview.jarহিসাবে নিশ্চিত করুন ।

আপনি যদি এটি পছন্দ না করেন তবে অ্যান্ড্রয়েডের জন্য প্রচুর বিকল্প ডেস্কটপ লগ ভিউয়ার রয়েছে

বন্য মধ্যে ক্রাশ

ব্যবহারকারীদের ডিভাইসগুলিতে ঘটে যাওয়া অযাচিত ব্যতিক্রমগুলির স্ট্যাকট্রেস পেতে ফায়ারবেস ক্র্যাশলাইটিক্সের মতো একটি রিয়েল-টাইম ক্রাশ রিপোর্টিং সরঞ্জামকে সংহত করুন।

ক্ষেত্রের বাগগুলি পরিচালনা করার বিষয়ে আরও জানার জন্য কীভাবে একটি বগি অ্যাপটি প্রকাশ করতে হবে (এবং লাইভ টু টেল টেলকে জানুন ) Read


4

লোকেরা ভুল করে এবং তাই কোডিংও করে।

যখন কোনও errorঘটনা ঘটেছে, সর্বদা লাল রঙের পাঠ্য সহ লগক্যাটটি পরীক্ষা করুন তবে আপনি সেই লাল রঙের পাঠ্যের আন্ডারলাইন সহ নীল রঙের পাঠ্যের আসল সমস্যাটি খুঁজে পেতে পারেন ।

আপনি কোনও নতুন তৈরি করেন কিনা তা নিশ্চিত করুন activity, সর্বদা ফাইলটিতে activityএটি ঘোষণা AndroidManifestকরুন।

যদি অনুমতি যোগ করা হয় তবে এটি AndroidMainifestফাইলটিতেও ঘোষণা করুন।


4

লগক্যাট - অ্যান্ড্রয়েড স্টুডিওর বিকাশের পর্যায়ে লগগুলি পরীক্ষা করতে

প্রাথমিকভাবে লগক্যাটটি সাফ করুন এবং অ্যাপটিকে আবার ক্রাশ হতে দিন যাতে আপনি কেবল ক্র্যাশ হওয়া লগের বিশদ পেতে পারেন। আপনাকে স্ট্যাক ট্রেসটি পরীক্ষা করতে হবে

দুর্ভাগ্যক্রমে, মাই অ্যাপ বন্ধ হয়ে গেছে। এর অনেক কারণ রয়েছে। আপনি লগ একই পরীক্ষা করতে পারেন। এর জন্য, আপনি লগ.ই ("TAG", "বার্তা") ব্যবহার করতে পারেন;

অ্যাপ ক্রাশের সময় সাধারণ ত্রুটি যেমন:

  1. কোডিংয়ের ভুল (কীওয়ার্ডের ভুল ব্যবহার)।
  2. মিল নেই সম্পত্তি নাম।
  3. অসমর্থিত প্লাগইন (সম্ভবত)।
  4. অমিল সংস্করণ (সম্ভবত)।
  5. অ্যান্ড্রয়েডমেনিস্ট ফাইলটিতে ক্রিয়াকলাপ অনুপস্থিত।
  6. অ্যান্ড্রয়েডমেনিস্ট ফাইলটিতে অনুমতি অনুপস্থিত।
  7. সর্বাধিক সাধারণ নালপয়েন্টার এক্সসেপশন।
  8. ঘোষিত হলেও সংজ্ঞায়িত হয়নি।

অ্যাপ্লিকেশন ক্রাশ ত্রুটি সমাধানের জন্য:

  • উপরের বিষয়গুলি মাথায় রাখুন এবং এটির মধ্য দিয়ে যান।
  • ত্রুটির সাথে, আপনি ফাইলের নামটিও নীল রঙে পাবেন (তাদের ক্লিক করুন এবং ত্রুটি থেকে কোডে ঝাঁপ দাও)।

3

প্রথমে আপনার অ্যাপটি কোথায় এবং কেন ক্রাশ হয়েছে তা যাচাই করা দরকার (Unfortunately, MyApp has stopped.).যার সাহায্যে LOGআপনি কী ভুল হয়েছে তা নির্ধারণ করতে পারেন।

এর পরে, আপনি খুঁজে পাবেন আপনার অ্যাপটি কোন পয়েন্টটি আপনার পয়েন্ট থেকে এটি ঠিক করা বন্ধ করেছে।


3

আপনার টার্মিনালে যদি আপনার কাছে কোনও ধরণের আকর্ষণীয় লগ না থাকে (বা তারা সরাসরি আপনার অ্যাপের সাথে সম্পর্কিত না হয়), সম্ভবত আপনার সমস্যা কোনও স্থানীয় লাইব্রেরির কারণে। সেক্ষেত্রে আপনার টার্মিনালের মধ্যে "সমাধিপাথর" ফাইলগুলি পরীক্ষা করা উচিত।

সমাধিস্টোন ফাইলগুলির জন্য ডিফল্ট অবস্থান প্রতিটি ডিভাইসের উপর নির্ভর করে, তবে যদি এটি হয় তবে আপনার লগ বলার দরকার হবে: Tombstone written to: /data/tombstones/tombstone_06

আরও তথ্যের জন্য, https://source.android.com/devices/tech/debug দেখুন


0

টার্মিনালে এই কমান্ডটি চালানো সমস্যার সন্ধান করতে সহায়তা করতে পারে:

gradlew build > log.txt 2>details.txt

তারপরে আপনার উপরের দুটি লগ ফাইল পড়ার ক্ষেত্রে গ্রেডলু ফাইলের অবস্থানে যাওয়া উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.