জেভিএমকে দূর থেকে ডিবাগ করার অনুমতি দেওয়ার জন্য জাভা কমান্ড লাইন বিকল্পগুলি কী কী?


321

আমি জানি যে JAVA_OPTSজাভা প্রোগ্রামটি দূর থেকে ডিবাগ করার জন্য কিছু রয়েছে ।

তারা কি এবং তাদের অর্থ কী?

উত্তর:


303

আমি এই নিবন্ধটি জাভা 5 এবং নীচে এটি সেট আপ করার জন্য বুকমার্ক করেছি ।

মূলত এটি দিয়ে চালান :

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044

জন্য উপরে জাভা 5 এবং তার সাথে সঞ্চালন করুন:

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

19
উল্লেখ করার মতো বিষয় হ'ল আপনি নিজের ঠিকানাটি *:1044কোনও কম্পিউটার থেকে রিমোট ডিবাগিং সক্ষম করতে পছন্দ করতে চান
হের ডার্ব

6
HerrDerb ঠিক আছে .. যেহেতু জাভা 9 "ঠিকানা = 1044" সবসময় সমস্ত ইন্টারফেসে শোনা যায় না। "ঠিকানা = *: 1044" জাভা 9+ জাভা 8 এর মতো আচরণ করে ...
আলফোনাক্স

459

জাভা 5.0 এর আগে, ব্যবহার করুন -Xdebugএবং -Xrunjdwpতর্ক করুন। এই বিকল্পগুলি পরবর্তী সংস্করণগুলিতে এখনও কাজ করবে, তবে এটি জেআইটি-র পরিবর্তে ইন্টারপ্রিটেড মোডে চলবে, যা ধীর হবে।

জাভা 5.0 থেকে, -agentlib:jdwpএকক বিকল্পটি ব্যবহার করা ভাল :

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

বিকল্প -Xrunjdwpবা agentlib:jdwpতর্কগুলি হ'ল:

  • transport=dt_socket : এর অর্থ জেভিএমের সাথে সংযোগ স্থাপনের জন্য ব্যবহৃত উপায় (সকেটটি ভাল পছন্দ, এটি কোনও দূরবর্তী কম্পিউটার ডিবাগ করার জন্য ব্যবহার করা যেতে পারে)
  • address=8000 : ডিবিগার থেকে সংযোগ করতে টিসিপি / আইপি পোর্ট উন্মুক্ত,
  • suspend=y : যদি 'y' হয়, JVM কে মৃত্যুদন্ড কার্যকর করার জন্য ডিবাগার সংযুক্ত না হওয়া পর্যন্ত অপেক্ষা করতে বলুন, অন্যথায় (যদি 'এন'), এখনই কার্যকর করা শুরু করে।

7
আপনার হুবহু সঠিক .. আমি -xdebug এবং -rrunjdwp দিয়ে চেষ্টা করেছি কিন্তু এটি কার্যকর হয়নি। আমি যখন এক্সরঞ্জডডব্প বা এজেন্টলিব দিয়ে চেষ্টা করেছি: jdwp এটি কাজ করছে। (জাভা 7 এ)
রোবএলেক্স

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

1
অবহেলা করা Xrunjdwpহয়েছে (বা সরানো হয়েছে?) কেন আমরা agentlib:jdwpএটি তুলব ?
আর্টঅফ ওয়ারফেয়ার

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

78

জাভা 9.0 যেহেতু জেডিডাব্লুপি কেবলমাত্র স্থানীয় সংযোগগুলি ডিফল্টরূপে সমর্থন করে। http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435

রিমোট ডিবাগিংয়ের জন্য *:ঠিকানা সহ প্রোগ্রামটি চালানো উচিত :

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

1
এটি আরও জোর দেওয়া উচিত, যেহেতু এটি একটি গুরুত্বপূর্ণ ইঙ্গিত যা সমস্ত নতুন জাভা সংস্করণে প্রযোজ্য।
সেবাস্তিয়ান এস

1
কেবল একটি নোট তৈরি করুন: ওরাকল লিঙ্কটি বলেছে এটি একই পুরানো আচরণ অর্জন করবে, তবে এটি সুরক্ষিত নয় এবং প্রস্তাবিত নয়।
চানসেওক ওহ

9

জাভা 1.5 বা তার বেশি জন্য:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

জাভা 1.4 এর জন্য:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

জাভা 1.3 এর জন্য:

java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

এখানে একটি সাধারণ প্রোগ্রাম থেকে আউটপুট দেওয়া হয়েছে:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 HelloWhirled
Listening for transport dt_socket at address: 1044
Hello whirled

5

জাভা

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8001,suspend=y -jar target/cxf-boot-simple-0.0.1-SNAPSHOT.jar

address পোর্টটি নির্দিষ্ট করে যেখানে এটি ডিবাগ করার অনুমতি দেবে

ম্যাভেন

** মাভেনের সাথে ডিবাগ স্প্রিং বুট অ্যাপ:

mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"

2

এখানে সবচেয়ে সহজ সমাধান।

আপনি যদি মাভেন ব্যবহার করছেন তবে পরিবেশের জন্য অনেক বিশেষ কনফিগারেশন প্রয়োজন। সুতরাং, আপনি যদি আপনার প্রোগ্রামটি ম্যাভেন থেকে শুরু করেন, কেবল mvnDebugপরিবর্তে কমান্ডটি চালান mvn, এটি রিমোট ডিবাগিং কনফিগারেশন সহ আপনার অ্যাপ্লিকেশনটি শুরু করার যত্ন নেবে। এখন আপনি 8000 বন্দরে সবেমাত্র একটি ডিবাগার সংযুক্ত করতে পারেন।

এটি আপনার জন্য পরিবেশের সমস্ত সমস্যার যত্ন নেবে।


1

কমান্ড লাইন

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=PORT_NUMBER

Gradle

gradle bootrun --debug-jvm

ম্যাভেন

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER

1
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER

এখানে আমরা কেবল একটি সকেট সংযুক্তকারী সংযোগকারী ব্যবহার করি, যা ডিটি_সকেট পরিবহনটি কনফিগার করা থাকে এবং ভিএম সার্ভার ডিবাগিং মোডে চলমান অবস্থায় ডিফল্টরূপে সক্ষম হয়।

আরও তথ্যের জন্য আপনি এইগুলি দেখতে পারেন: https://stackify.com/java-remote-debugging/

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