ডিবাগ যুক্তি দিয়ে JVM শুরু না করে একটি জাভা অ্যাপ্লিকেশন ডিবাগ করুন


98

সাধারণত চলমান জেভিএম-এ কোনও ডিবাগার সংযুক্ত করার জন্য আপনার নীচের মতো যুক্তি দিয়ে jvm শুরু করতে হবে:

> java -Xdebug -Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n

এখন আমি যদি এমন কোনও প্রক্রিয়া ডিবাগ করতে চাই যা ডিবাগ মোডে শুরু হয়নি, আমি কী করতে পারি?

এই পরিস্থিতি তখন দেখা দেয় যখন কোনও প্রোডাকশন সিস্টেম (অর্থাত্‍ ডিবাগ আরগগুলি ছাড়াই শুরু করা) কোনও 'এলোমেলো' (আমি শব্দের আলগাভাবে ব্যবহার করি) প্রদর্শন করে। সুতরাং আমি যথাযথ যুক্তি দিয়ে jvm পুনরায় আরম্ভ করতে পারি না, কারণ কীভাবে ত্রুটিটি আবার প্রজনন করা যায় তা কেউ জানে না। এই পরিস্থিতিতে জেভিএমের সাথে সংযুক্ত হওয়া কি অসম্ভব?

কেবল স্পষ্ট করে বলতে যে ইতিমধ্যে চলমান জেভিএমগুলির সংযুক্ত করতে jdb এর মতো সরঞ্জামগুলি ব্যবহার করা সম্ভব নয় যদি না সেগুলি ডিবাগ মোডে শুরু করা হয়

জেভিএম ম্যান পৃষ্ঠা থেকে

Jdb ব্যবহারের আরেকটি উপায় হ'ল এটি ইতিমধ্যে চলছে এমন একটি জাভা ভিএম এর সাথে সংযুক্তি। একটি ভিএম যা জেডিবি দিয়ে ডিবাগ করতে হবে তা নিম্নলিখিত বিকল্পগুলির সাথে শুরু করতে হবে:


উত্তর:


48

আপনি ব্যবহার করতে সক্ষম হতে পারে jsadebugd ( JDK ) (সহ Windows উপলব্ধ প্রক্রিয়া একটি ডিবাগ সার্ভার সংযুক্ত করতে Windows এর জন্য ডিবাগ টুলস )। এটি পরীক্ষামূলক হিসাবে চিহ্নিত হয়েছে, তাই আপনি প্রথমে এটি একটি পরীক্ষার মেশিনে চেষ্টা করে দেখতে চাইতে পারেন।

ব্যবহার:

jsadebugd <pid>
jdb -connect sun.jvm.hotspot.jdi.SADebugServerAttachingConnector:debugServerName=localhost

সংযোগকারীটির নাম উইথ আরগটি ব্যবহার করে পাওয়া যাবে jdb -listconnectors


4
আমি লিনাক্স ব্যবহার করছি তাই এটি সবচেয়ে প্রতিশ্রুতিবদ্ধ সমাধান বলে মনে হচ্ছে
হাফেজ

এর সাথে ভাগ করে নিতে কোন অভিজ্ঞতা?
থোরবজর্ন রাভন অ্যান্ডারসন

4
আমার অভিজ্ঞতাটি হ'ল এটি যে সময়ের জন্য আমার প্রয়োজন ছিল সেগুলি ভালভাবে কাজ করেছিল, এই সময়ে সফ্টওয়্যারটির ফ্যাক্টরির সমস্ত দৃষ্টান্ত ডিফল্টরূপে jvm ডিবাগ অপশনগুলির সাথে আরম্ভ করার জন্য কোনও কনফিগার করা হয়নি যাতে আমরা সমর্থিত পদ্ধতিটি ব্যবহার করতে পারি।
হাফেজ 21

জাভা 11 jsadebugdএ প্রতিস্থাপন করা হয়েছিল jhsdb debugd। সুতরাং যে হয়ে যায় jhsdb debugd --pid <pid>। দেখুন একটি টক উপস্থাপনা jhsdb এর স্লাইড এবং jhsdb এর জন্য দস্তাবেজ
Delthas

এটিও SADebugServerAttachingConnectorসরানো হয়েছে বলে মনে হয় jdbএবং আমি মনে করি প্রতিস্থাপনটি jhsdb hsdb/ হওয়ার কথা jhsdb clhsdb। কী যুক্তি দিতে হবে সে সম্পর্কে আমি কোনও ডক্স পাচ্ছি না jhsdb clhsdb
ডেলথাস

32

কেবল স্পষ্ট করার জন্য ইতিমধ্যে চলমান JVMs>> এ সংযুক্ত করার জন্য jdb এর মতো সরঞ্জাম ব্যবহার করা সম্ভব নয় যদি না সেগুলি ডিবাগ মোডে শুরু করা হয়

সোভিয়েত রাশিয়ার উত্স আপনি পড়েন

jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=9426

4
হ্যাঁ এটি "সমর্থিত" উত্তর তবে পরীক্ষামূলক
উত্তরটিই

7

ভিজ্যুয়ালভিএম কোনও ডিবাগার নয়, তবে আপনি এটি থেকে থ্রেড ডাম্প এবং হিপ ডাম্পগুলি পেতে পারেন যা কিছু সমস্যা নির্ণয়ের ক্ষেত্রে দরকারী। সর্বাধিক দরকারী বৈশিষ্ট্যগুলির জন্য জেভিএম 5 বা 6 প্রয়োজন।


লিঙ্কটি কাজ করে না .... সম্ভবত আপনি https: // এর আগে http: // সরিয়ে ফেলতে পারেন তবে আমার যথেষ্ট খ্যাতি থাকবে না
নিউটোপিয়ান

+1 ভিজ্যুয়ালভিএম সত্যিই আকর্ষণীয় দেখায়। বিটিডাব্লু: লিঙ্কটি এখন ঠিক করা হয়েছে।
sleske

5

jstack ব্যবহার (ডেডলক ক্ষেত্রে দরকারী) অথবা btrace VisualVM প্লাগইন এছাড়াও কৌতুক করতে পারে


-5

আপনি সর্বদা জেডিবি এবং ডিবাগ নিজেই ব্যবহার করতে পারেন: পি


4
আমি সবসময় ভেবেছিলাম যে আপনি ডিভিগ সংযোগের অনুমতি দেওয়ার জন্য jvm শুরু না করা হলে আপনি jdb এর সাথে jvm এর সাথে সংযুক্ত থাকতে পারবেন না আমি কি ভুল করছি?
হাফেজ

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

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

সঠিক সংযোজক (এখন জন্য অসমর্থিত) দিয়ে jdb একটি চলমান প্রক্রিয়াতে সংযোগ করতে পারে।
থরবজর্ন রাভন অ্যান্ডারসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.