এক্সপ্লিট ডিবাগারটি সর্বদা থ্রেডপুলএক্সিকিউটারে কোনও স্পষ্ট ব্যতিক্রম ছাড়াই অবরুদ্ধ করে, কেন?


209

আমি Eclipse এ আমার সাধারণ প্রকল্পগুলিতে কাজ করছি, এটি একটি J2EE অ্যাপ্লিকেশন, স্প্রিং, হাইবারনেট এবং আরও অনেক কিছু নিয়ে তৈরি। আমি এটির জন্য টমকেট 7 ব্যবহার করছি (কোনও নির্দিষ্ট কারণে, আমি কোনও নতুন বৈশিষ্ট্য কাজে লাগাই না, আমি কেবল এটি চেষ্টা করতে চেয়েছিলাম)। যতবারই আমি আমার অ্যাপ্লিকেশনটি ডিবাগ করি, তখন এটি ঘটে থাকে যে গ্রহপিন্ড ডিবাগারটি যখন কোনও ব্রেকপয়েন্টে পৌঁছেছে তখন পপআপ হয়ে যায়, তবে এটি এমনটি নয়, বাস্তবে এটি জাভা উত্স ফাইলটিতে থামে ThreadPoolExecutor। কনসোলে কোনও স্ট্যাক ট্রেস নেই, এটি কেবল থামে। তারপরে আমি যদি রেজিউমে ক্লিক করি তবে এটি যায় এবং অ্যাপটি পুরোপুরি কার্যকর হয়। এটি ডিবাগার উইন্ডোতে প্রদর্শিত হচ্ছে:

Daemon Thread ["http-bio-8080"-exec-2] (Suspended (exception RuntimeException)) 
    ThreadPoolExecutor$Worker.run() line: 912   
    TaskThread(Thread).run() line: 619

আমি সত্যিই এটি ব্যাখ্যা করতে পারি না, কারণ আমি মোটেও ব্যবহার করছি না ThreadPoolExecutor। টমকেট, হাইবারনেট বা স্প্রিংয়ের কিছু হতে হবে। এটি খুব বিরক্তিকর কারণ আমাকে সবসময় ডিবাগ করার সময় পুনরায় শুরু করতে হয়।

কোন সংকেত সনাক্ত করুন?


1
@ AmosM.Carpenter এটি জাভা EE নয়, JEE নয়? এমনকি আপনার নিজের
লিঙ্কটিও

উত্তর:


290

পোস্ট স্ট্যাক ট্রেস ইঙ্গিত দেয় যে একটি রানটাইম এক্সেকসেপশন একটি ডেমন থ্রেডে এসেছিল। এটি মূলত রানটাইমের সময় শিখতে পারা যায়, যদি না মূল বিকাশকারী ব্যতিক্রমটিকে ধরেন এবং পরিচালনা না করে।

সাধারণত, অলিপস-এ ডিবাগারটি নির্ধারিত স্থানে যেখানে ব্যতিক্রম নিক্ষেপ করা হয়েছিল সেখানে নির্বাহ স্থগিত করার জন্য কনফিগার করা হয়েছিল, সমস্ত ব্যতীত ব্যতিক্রম ব্যতীত । মনে রাখবেন যে ব্যতিক্রমগুলি পরে পরিচালনা করা হবে, স্ট্যাক ফ্রেমে নীচে নিচে এবং থ্রেডটি সমাপ্ত হতে পারে না। এটি পালন করা আচরণের কারণ হবে।

অন্ধকার আচরণ কনফিগার করার পদ্ধতি : সহজবোধ্য
যান উইন্ডো > পছন্দসমূহ > জাভা > ডিবাগ এবং আনচেক uncaught ব্যতিক্রম উপর সঞ্চালনের সাসপেন্ড


আমার ক্ষেত্রে stackoverflow.com/questions/8911146/... এটা সাহায্য করেনি :-(
Gangnus

5
আমি এ সম্পর্কে Eclipse বাগ 384073 দায়ের করেছি যেহেতু এটি ওয়েব অ্যাপসটি ডিবাগ করার সময় এই বিকল্পটি মূলত অপ্রয়োজনীয় করে তোলে।
ড্যানিয়েল সেরোদিও

9
Eclipse এ "অপ্রকাশিত প্রয়োগের স্থগিতাদেশ" অক্ষম করা একটি খারাপ কাজ: আপনি যদি চান চান যদি আপনার নিজের কোড থেকে উদ্ভূত প্রকৃত অব্যক্ত ব্যতিক্রমগুলিতে Eclipse স্থগিত করা হয়? আমার কাছে মনে হচ্ছে এটি টমক্যাটের একটি বাগ ...

3
@ লুইস: আমিও অবাক হয়েছি! অনুযায়ী bugs.eclipse.org/bugs/show_bug.cgi?id=384073#c4 , এক করতে পারেন: নিষ্ক্রিয় বিশ্বব্যাপী ব্রেকপয়েন্ট, java.lang.Exception-এ একটি নতুন ব্রেকপয়েন্ট তৈরি, এবং এই নব নির্মিত ব্রেকপয়েন্ট বিরুদ্ধে একটি একচেটিয়া ফিল্টার প্রয়োগ করুন।
রেকটিড

3
@ ড্যানিয়েল ... টমকেট দলের সাথে একটি সমস্যা ফাইল করা আরও ভাল। টমক্যাট in-এ এই আচরণটি নতুন বলে আমি মনে করি ... গ্রহণটি যা করার কথা তা হ'ল গ্রহপণ্য ... (কখনই ভাবিনি যে আমি একদিনে
গ্রহনকে

47

আরও একটি সুনির্দিষ্ট সমাধান রয়েছে, যা RuntimeExceptionকেবলমাত্র প্রদত্ত শ্রেণীর থেকে ফেলে দেওয়া গ্রাহকে ভাঙ্গা রোধ করে ।

  1. ডিবাগিং দৃষ্টিকোণ থেকে একটি নতুন ব্যতিক্রম ব্রেক ব্রেকপয়েন্ট যুক্ত করুন
  2. এর বৈশিষ্ট্যগুলিতে যান
  3. ফিল্টারিং এ যান
  4. ইন "নির্বাচিত অবস্থান (গুলি) তে সীমাবদ্ধ", ক্লিক করুন " যোগ করুন শ্রেণী "
  5. যোগ java.util.concurrent.ThreadPoolExecutor
  6. চেকবক্সটি অনিক করুন , এর অর্থ এগুলি উপেক্ষা করা হবে

1
টমক্যাট 7 এবং Eclipse / STS 3.4.0 এর সাথে এটি কাজ করার মতো মনে হচ্ছে না। অন্য কোন সেটিংস প্রয়োজন আছে? এই ব্রেকপয়েন্টে নিবন্ধন করা উচিত RuntimeException? এটি কি সক্ষম বা অক্ষম করতে হবে? 'ক্যাচ লোকেশন' এবং 'আনকচড লোকেশন' চালু বা বন্ধ থাকা উচিত?
হেনরিক হিমবুর্গের

2
এটি প্রদর্শিত হয় যে ব্যতিক্রম ব্রেকপয়েন্টটি একটি জাভা.এলং হওয়া দরকার un রুনটাইম এক্সেপশন, সক্ষম হওয়া আবশ্যক, কেবল অনাবৃত অবস্থানের জন্য হওয়া আবশ্যক, এবং জাভা.ইটিল.কন্ট্রন্ট.স্র্যাডপুলএক্সেকিউটার ক্লাস পরীক্ষা করা উচিত নয়।
মারিও

দুর্ভাগ্যক্রমে উবুন্টু ১৪.০৪-তে "নির্বাচিত অবস্থানের সীমাবদ্ধ করুন" উপলভ্য নয়, গ্রহগ্রহ লুনা ৪.৪.০ এর জন্য।
eeezyy

24

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

এটি এখন টমক্যাটের 7.0.54 সংস্করণ এবং 8.0.6 থেকে স্থির করা হয়েছে: https://issues.apache.org/bugzilla/show_bug.cgi?id=56492


2

আমি লক্ষ্য করেছি যে সার্ভার ফাইলগুলি (jsp বা java) সংশোধন করার পরে এটি প্রায়শই ঘটে এবং এসটিএসের অ্যাপ্লিকেশনটি পুনরায় লোড করতে সমস্যা হয়।

এটি সাধারণত পরিবর্তনগুলি সিঙ্ক্রোনাইজ করার জন্য সার্ভারটি পুনরায় চালু করার দিকে পরিচালিত করে।

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

নেটিভ হটসোপিং সরিয়ে, এটি থ্রেডপুলএক্সেকিউটার শ্রেণীর ভিতরে এটি ভেঙে দিয়ে সমস্যাটি সরিয়ে দেয়।

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