চলমান জাভা প্রক্রিয়াতে ইন্টেলিজ আইডিইএ ডিবাগার যুক্ত করুন


237

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


3
অবশ্যই. আপনাকে একটি "রিমোট" রান / ডিবাগ কনফিগারেশন তৈরি করতে হবে। আরও এখানে
ভিক

2
ওহ, এই কমান্ড লাইন আর্গুমেন্ট কেবল 14.0.2 হিসাবে পড়ুন। আপনি তাদের মধ্যে কেবল কয়েকটি সম্পাদনা করতে পারেন, যা এই প্রশ্নের সমস্যা সমাধানে সহায়তা করে না। কোন ধারনা কিভাবে এটা ঠিক করতে হবে?
nuzzolilo

: উত্তর এখানে stackoverflow.com/questions/51207430/...
RoutesMaps.com

উত্তর:


372

হ্যাঁ! আপনি এটি সেট আপ এখানে।

কনফিগারেশন চালান

রিমোট রান কনফিগারেশন তৈরি করুন:

  1. চালান -> কনফিগারেশন সম্পাদনা করুন ...
  2. উপরের বামদিকে "+" ক্লিক করুন
  3. বাম-সর্বাধিক ফলকে "রিমোট" বিকল্পটি নির্বাচন করুন
  4. একটি নাম চয়ন করুন (আমি আমার নাম "রিমোট-ডিবাগিং")
  5. সংরক্ষণ করতে "ঠিক আছে" ক্লিক করুন:

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

জেভিএম বিকল্পসমূহ

উপরের কনফিগারেশনটি কেবল তিনটি পঠনযোগ্য ক্ষেত্র সরবরাহ করে। এই বিকল্পগুলি যা আপনার অ্যাপ্লিকেশনটি চালানোর সময় জেভিএমকে দূরবর্তী ডিবাগিংয়ের জন্য 5005 পোর্ট খুলতে বলে tell আপনি যে অ্যাপ্লিকেশনটি ডিবাগ করছেন তার JVM বিকল্পগুলিতে উপযুক্তটিকে যুক্ত করুন। আপনি এটি করতে পারেন এমন এক উপায় এরকম হতে পারে:

export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

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

আপনার অ্যাপ্লিকেশনটি শুরু হওয়ার আগেই আপনি ইন্টেলিজের সাথে সংযোগ না করা পর্যন্ত অপেক্ষা করতে বাধ্য করতে আপনি পরিবর্তন suspend=nকরতে পারেন suspend=y। আপনি যে ব্রেক ব্রেকপয়েন্টটি আঘাত করতে চান তা অ্যাপ্লিকেশন প্রারম্ভের সময় ঘটলে এটি সহায়ক।

ডেবাগ্ করা

আপনার অ্যাপ্লিকেশনটি আপনি যেমন সাধারণত শুরু করেন তেমনই শুরু করুন, তারপরে ইন্টেলিজে নতুন কনফিগারেশনটি নির্বাচন করুন এবং 'ডিবাগ' টিপুন।

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

ইন্টেলিজ জেভিএমের সাথে সংযুক্ত হবে এবং রিমোট ডিবাগিং শুরু করবে।

আপনি এখন পছন্দসই আপনার কোডে ব্রেকপয়েন্ট যুক্ত করে অ্যাপ্লিকেশনটি ডিবাগ করতে পারেন। অ্যাপ্লিকেশনটির আউটপুটটি আগে যেখানেই প্রদর্শিত হয়েছিল সেখানে উপস্থিত হবে তবে আপনার ব্রেকপয়েন্টগুলি ইনটেলিজজে আঘাত হানে।


2
"রিমোট" বিকল্পটি ম্যাক ওস এল ক্যাপিটেনে আমার ইন্টেলিজ আইডিইএ 15.0.2 এ অনুপস্থিত। আমি কীভাবে এই বিকল্পটি পেতে পারি?
ব্যবহারকারী 674669

@ user674669 আমি নিশ্চিত নই সম্ভবত Remoteসম্প্রদায় সংস্করণে পাওয়া যায় না? আমি অর্থ প্রদান করা সংস্করণ ব্যবহার করছি। সম্প্রদায় সংস্করণ সহ যে কেউ নিশ্চিত করতে পারেন?
Cory Klein

@ কৌরিক্লিন আপনি কি জানেন যে System.out.printlnদূরবর্তী ডিবাগিংয়ের সময় কীভাবে ইন্টেলিজিয়ায় আউটপুট আটকানো যায় ?
ডন রুম্মি

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

দূরবর্তী সার্ভারটি যদি কেবলমাত্র এসএসএসের মাধ্যমে অ্যাক্সেসযোগ্য হয় তবে কী কীভাবে আমরা ফাইলটি নির্দিষ্ট করব?
ওয়াচ

44

এটি সম্ভব, তবে আপনি যখন অ্যাপ্লিকেশন শুরু করবেন তখন আপনাকে কিছু জেভিএম পতাকা যুক্ত করতে হবে।

আপনাকে দূরবর্তী ডিবাগ কনফিগারেশন যুক্ত করতে হবে: কনফিগারেশন সম্পাদনা করুন -> রিমোট।

তারপরে আপনি প্রদর্শিত প্রোগ্রামের ডায়ালগ উইন্ডো প্যারামিটারগুলিতে পাবেন যা আপনাকে প্রোগ্রামের প্রয়োগে যুক্ত করতে হবে, যেমন:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

তারপরে আপনার অ্যাপ্লিকেশন চালু হওয়ার পরে আপনি আপনার ডিবাগারটি সংযুক্ত করতে পারেন। আপনি যদি নিজের অ্যাপ্লিকেশনটি ডিবাগার সংযুক্ত না হওয়া পর্যন্ত অপেক্ষা করতে চান তবে সাসপেন্ড ফ্ল্যাগটি y ( suspend=y) এ পরিবর্তন করুন


এটি আমাকে বিভ্রান্ত করেছে যে আপনি নীচের ইনপুটগুলি সম্পাদনা করেছেন এবং এগুলি পরে উপরের বিকল্পগুলির স্ট্রিংগুলি আপডেট করুন (কমপক্ষে ১৩.১ সিইতে)
কার্ল জি

7
ওহ, এই কমান্ড লাইন আর্গুমেন্ট কেবল 14.0.2 হিসাবে পড়ুন। আপনি তাদের কয়েকটি সম্পাদনা করতে পারেন। কোন ধারনা কিভাবে এটা ঠিক করতে হবে?
nuzzolilo

1
এছাড়াও, আপনি এই বিকল্পগুলি সেট করে কোন প্রক্রিয়াতে সংযুক্ত করছেন?
nuzzolilo

5
প্রথম একজন আমার জন্য কাজ করেছেন। অন্যদের কাছে নোট করুন - আমার -জার পতাকার আগে এটি নির্দিষ্ট করা দরকার।
জিম 22

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

6

AndroidStudio বা ধারণাতে

  1. অ্যাপ্লিকেশনটি কনফিগার করুন ডিবাগ হবে, সম্পাদনা কনফিগারেশন খুলুন

"ভিএম বিকল্পগুলি" কনফিগারেশন “-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005” "ঠিকানা" মনে রাখবেন

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

  1. প্রস্থান না হলে কনফিগার করুন রিমোট ডিবাগার, যোগ করতে + ক্লিক করুন

পদক্ষেপ 1 "ঠিকানার" মতো "পোর্ট" নির্দিষ্ট করুন এখানে চিত্র বর্ণনা লিখুন


6

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


0

এছাড়াও আমি টমক্যাট জিইউআই অ্যাপ্লিকেশনটি ব্যবহার করি (আমার ক্ষেত্রে: সি: om টমক্যাট \ বিন \ টোম্যাট 9 ডাব্লু.বিন)।

  • জাভা ট্যাবে যান :

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

  • আপনার জাভা বৈশিষ্ট্যগুলি সেট করুন, উদাহরণস্বরূপ:

    জাভা ভার্চুয়াল মেশিন

    সি: \ প্রোগ্রাম ফাইল \ জাভা \ jre-10.0.2 \ বিন \ সার্ভার \ jvm.dll

    জাভা ভার্চুয়াল মেশিন

    সি: \ হুল বিড়াল \ বিন \ bootstrap.jar; সি: \ হুল বিড়াল \ বিন \ হুল বিড়াল-juli.jar

    জাভা বিকল্পগুলি :

    -Dcatalina.home = C: \ হুল বিড়াল

    -Dcatalina.base = সি: \ হুল বিড়াল

    -Djava.io.tmpdir = সি: \ হুল বিড়াল \ টেম্প

    -Djava.util.logging.config.file = সি: \ হুল বিড়াল \ সার্ভার \ logging.properties

    -agentlib: jdwp = পরিবহন = dt_socket, সার্ভার = Y, সাসপেন্ডের = ঢ, ঠিকানা = *: 8000

    জাভা 9 বিকল্প :

    --add-প্রর্দশিত = java.base / java.lang = সব-নামহীন

    --add-প্রর্দশিত = java.base / java.io = সব-নামহীন

    --add-প্রর্দশিত = java.rmi / sun.rmi.transport = সব-নামহীন

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