সাধারণ-বিল্ড-সরঞ্জাম (এসবিটি) এবং ইন্টেলিজিজ দিয়ে স্কেল কোডটি ডিবাগ করছে


120

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

ফলো-আপ প্রশ্ন: এসবিটি-র জেটি-রান কমান্ডটি ব্যবহার করার সময় জেটির সাথে ইন্টেলিজের ডিবাগারটি সংযুক্ত করার সহজতম উপায় কী?


6
দয়া করে ভবিষ্যতে প্রশ্নগুলি মেশান না
হেনার

উত্তর:


47

ইন্টেলিজজে সাধারণ ডিবাগিংয়ের জন্য, আপনি নিজের কোডটি সংকলনের জন্য এসবিটি ব্যবহার করছেন কিনা তা বিবেচনা না করে আপনি সাধারণভাবে একটি অ্যাপ্লিকেশন রান / ডিবাগ কনফিগারেশন ব্যবহার করতে পারেন।

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

-Xdebug -Xrunjdwp: পরিবহন = dt_sket, সার্ভার = y, সাসপেন্ড = এন, ঠিকানা = 5005

এই যুক্তি দিয়ে sbt আরম্ভ করুন এবং তারপরে কার্যকর করুন jetty-run। অবশেষে, আপনার দূরবর্তী ডিবাগ কনফিগারেশনটি ইন্টেলিজজে চালু করুন। এই থ্রেড দরকারী হতে পারে।


1
আমার জন্য স্বাভাবিকভাবে এটি ভালভাবে কাজ করে না: stackoverflow.com/questions/16337745/…
এসইএস

আপনি কোথায় এটি টাইপ করবেন? -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
Jwan622

@ জওয়ান 22২২ এই আর্গুমেন্টগুলি (যেমন কমান্ড লাইন থেকে, কমান্ড লাইন আর্গুমেন্ট হিসাবে সরবরাহ করে) দিয়ে এসবিটি চালু করুন। তারপরে jetty-runsbt প্রম্পটে এক্সিকিউট করুন ।
অ্যারন নভস্ট্রাপ

তাই শুধু চালানো sbt -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005?
Jwan622

3
বেশিরভাগ ব্যবহারকারীর পক্ষে কাজ করা উচিত তবে এটি আপনার সিস্টেমে কীভাবে এসবিটি সেটআপ হয় তার উপর নির্ভর করে। অন্য উত্তরে যেমন উল্লেখ করা হয়েছে, আপনি কেবল চালাতে সক্ষম হতে পারেন sbt -jvm-debug 5005
অ্যারন নভস্ট্রাপ

189

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

sbt -jvm-debug 5005

কভারগুলির অধীনে , এটি টিপিকাল ভার্বোস ডিবাগিং ইনট্যান্টেশন সহ এসবিটির জন্য জেভিএম শুরু করে:

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

আপনি এখন আপনার কোডটি সাধারণ হিসাবে চালাতে পারেন, উদাহরণস্বরূপ sbt runকমান্ড দিয়ে।

চলমান কোডের সাথে সংযোগ রাখতে ইন্টেলিজি কনফিগার করা হচ্ছে ...

এখন আপনি রিমোট ডিবাগ কনফিগারেশন ব্যবহার করে আপনার চলমান প্রক্রিয়াতে ইন্টেলিজিকে সংযুক্ত করেন । লক্ষ্য করুন এই ফর্মটি উপরের 3 ক্ষেত্র, যখন ভীতিকর, আপনি টেক্সট কপি করার জন্য শুধু জন্য আউট এর, বরং মধ্যে তুলনায় (বাগাড়ম্বরপূর্ণ ডিবাগ জাদুমন্ত্রোচ্চারণ উপরে উল্লিখিত তারা দান হয়েছেন, যা -jvm-debugইতিমধ্যে আপনার জন্য যত্ন নেয়) - শুধুমাত্র কনফিগারেশন আপনি Settingsঅর্ধেক অংশে পরিবর্তন করতে পারেন :

ইন্টেলিজজে রিমোট ডিবাগ কনফিগারেশন


1
এটি উইন্ডোজে কাজ করে না - এই (লুসি) প্ল্যাটফর্মের ক্ষেত্রে কীভাবে একই রকম করতে হবে কোনও ধারণা?
জাভাদবা

এটি আমার বিশ্বাস লঞ্চের স্ক্রিপ্টটি উইন্ডোজ: github.com/sbt/sbt-launcher-package/blob/master/src/windows/sbt- র জন্য ব্যবহৃত হয় । আমি আপনাকে -jvm-debugপ্যারামিটারটি স্বীকার করার জন্য কীভাবে স্ক্রিপ্টটি সংশোধন করতে হবে তা উত্সাহিত করতে এবং উত্সাহিত করার অনুরোধ হিসাবে জমা দেওয়ার জন্য উত্সাহিত করব - যারা একই প্ল্যাটফর্মে নিজেকে খুঁজে পান তাদের প্রত্যেককে উপকৃত করার জন্য আপনি একটি ভাল সুযোগের পক্ষে দাঁড়ান।
রবার্তো টাইলি

এটি দেখেছি। উইন্ডোজ লঞ্চ স্ক্রিপ্টটি WAY আদিম বনাম লিনাক্স। এখন করতে পারছি না।
জাভাদবা


3
ইন্টেলিজজে "এসবিটি-জেভিএম 5005" কোথায় toোকানো যায় তা জানতে সহায়ক হবে
eddy147

39

এ নিয়ে আমারও কিছুটা সমস্যা হয়েছিল, তাই অতিরিক্ত বিশদ হওয়ার ঝুঁকিতে, আমি যা করেছি তা এখানে:

সেটআপ

  1. এসবিটি জেটি-রানের জন্য একটি রান কনফিগারেশন তৈরি করুন

    • রান> সম্পাদনা কনফিগারেশন এ যান
    • [+] আইকনটি ক্লিক করুন এবং স্কালা সংকলন সার্ভার চয়ন করুন
    • আপনি যে নামটি চান তা লিখুন এবং "এসবিটি অ্যাকশন চালান" চেকবক্সটি ক্লিক করুন এবং এসবিটি অ্যাকশন জেটি-রান নির্বাচন করুন [...]
  2. রিমোট ডিবাগিংয়ের জন্য একটি ডিবাগ কনফিগারেশন তৈরি করুন

    • রান> সম্পাদনা কনফিগারেশন এ যান
    • [+] আইকনটি ক্লিক করুন এবং রিমোট চয়ন করুন
    • আপনি যে নামটি চান তা লিখুন এবং লাইনটি অনুলিপি করুন -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005(কনফিগারেশনটি তৈরির জন্য ঠিক আছে ক্লিক করুন)
  3. উপরের ভিএম বিকল্পগুলি চালানোর জন্য এসবিটি প্লাগইন সেট আপ করুন

    • ফাইল> সেটিংস> এসবিটিতে যান
    • -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005ভিএম প্যারামিটার বাক্সে লাইনটি ইতিমধ্যে উপস্থিত রয়েছে তার পরে আটকান

ডিবাগিং

  1. পছন্দসই হিসাবে ব্রেকপয়েন্টগুলি সেট করুন
  2. জেটি ওয়েব সার্ভারটি আপনার উপরে তৈরি এসবিটি জেটি-রান কনফিগারেশন চয়ন করে এবং রান> রান চয়ন করে বা সবুজ তীর ক্লিক করে শুরু করুন
  3. আপনি উপরে তৈরি রিমোট ডিবাগিং কনফিগারেশন চয়ন করে এবং রান> ডিবাগ বাছাই করে বা বাগ আইকনটি ক্লিক করে রিমোট ডিবাগারটি শুরু করুন

16
কনফিগারেশন মেনুতে কোনও স্কালা সংকলন সার্ভার নেই। তাহলে আমার কি বিশেষ কিছু দরকার?
আরে

মনে হচ্ছে স্টেপ 1 এর দরকার নেই, আমি যা করি তা এসবিটি কমান্ড চালায় sbt -jvm-debug 5005 console, তারপরে ইনটেলজেজে আইডিয়ায় ব্রেকপয়েন্ট সেট করুন, ডিবাগ চালান।
Pengfei.X

@ Pengfei.X, sbt -jvm-debug 5005 consoleআমার পক্ষে কাজ করে নি, তবে sbt -jvm-debug 5005করেছে।
লুকাস্জ সিজারউইনস্কি

8

এটি প্রতিটি সময় আমার জন্য কাজ করে এবং আপনাকে কেবলমাত্র সেটেল আপ করতে হবে এটি হ'ল ইন্টেলিজজে রিমোট ডিবাগিং; আমি ইন্টেলিজজে টার্মিনাল থেকে জেভিএম প্যারামিটারগুলি দিয়ে এসবিটি শুরু করি:

sbt -J-Xdebug -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

এর পরে আমি লোকালহোস্ট: 5005 এ রিমোট ডিবাগিং শুরু করতে পারি


7

আমি এখানে অন্য উত্তর যুক্ত করছি, কারণ সম্পর্কিত সমস্যাটি দেখার সময় আমি এই প্রশ্নটি পেয়েছি: ব্রেকপয়েন্টগুলি ব্যবহার করে পরীক্ষা ক্লাসগুলি ডিবাগ করা।

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

'স্কেলাটেষ্ট' টাইপের নতুন রান / ডিবাগ কনফিগারেশন তৈরি করুন, মূল "টেস্ট ক্লাস:" নামটি লিখুন এবং "লঞ্চের আগে: এসবিটি অ্যাকশন চালান 'পরীক্ষা-সংকলন' 'নির্বাচন করুন। এটাই, আপনি এখন পরীক্ষার উত্সগুলিতে ব্রেকপয়েন্টগুলি রাখতে পারেন এবং এই কনফিগারেশনটি চালাতে পারেন।


একই, তবে ভাল কাজ করে না: stackoverflow.com/questions/16337745/…
সেস

টেস্ট ক্লাসে বেশ কয়েকটি পরীক্ষা থাকলে আমি কীভাবে কেবল একটি পরীক্ষা চালাতে পারি তা কি জানেন? আপনি কি দয়া করে নীচের প্রশ্নটি দেখতে পারেন stackoverflow.com/questions/54977741/…
মনু চদা

7

এই উত্তরগুলি বা সরবরাহিত লিঙ্কগুলির কোনওটিই আমার পক্ষে কাজ করেনি, সুতরাং আমি যখন এটি বের করে ফেললাম তখন আমি বুঝতে পারি যে আমি ভাগ করে নেব ...

আমি যখন শুরু করি তখন পটভূমির বোঝাপড়া সহ ...

এটি বেশিরভাগই এখানে অতিরিক্ত নির্দেশ দিয়ে আমাকে নির্দেশ দিয়েছিলেন এমন নির্দেশাবলীর ভিত্তিতে তৈরি ।

আমার পরিবেশ: স্কেলা 2.10.2, এসবিটি 0.13, এবং ইন্টেলিজ 13.1 J

পটভূমি:

  • যে কোনও কারণেই হোক, ইন্টেলিজজে স্কালাকে সংকলন করতে এসবিটি ব্যবহার করা মাভেন প্রকল্পগুলি যেভাবে (যা সত্যই সহজে ডিবাগিংয়ের অনুমতি দেয়) সংহত নয়।
  • আমার বোঝাপড়া থেকে এটি উপস্থিত হয় যে এসবিটি সংকলন করার সময়, আপনি একটি পৃথক প্রক্রিয়া সংকলন করছেন, সুতরাং, আপনাকে দূরবর্তী ডিবাগিং করা দরকার need

ডিবাগিং কি?

  • ডিবাগিং এমন একটি মোড যা আপনি আপনার JVM বা অ্যাপ্লিকেশন চালাতে পারেন যা আপনাকে কোডের প্রয়োগের প্রবাহকে নিয়ন্ত্রণ করতে দেয়।
  • তারপরে আপনি যে ডিবাগিং সরঞ্জামটি ব্যবহার করেন সেটি ডিবাগিং ইঞ্জিনকে কমান্ড জারি করতে পারে যা এটিকে "পরবর্তী কোডের পরবর্তী লাইনটি কার্যকর করে তারপরে আবার বিরতি দিন" বা "চালানো চালিয়ে যান" বা "স্মৃতিতে সঞ্চিত ভেরিয়েবলের মান পান" বলে দেয়।

রিমোট ডিবাগিং কি?

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

উপরের লিঙ্কটি উল্লেখ করে, নিম্নলিখিত ব্যাখ্যা / পরিবর্তনগুলি দরকারী:

  1. নেটওয়ার্ক সকেট সেট আপ করার সময় পোর্ট সহ "ডিবাগিং সক্ষম" JVM সেটিংস সহ এসবিটি চালু করার জন্য ইন্টেলিজ সেটআপ করুন। (অপরিবর্তিত) আপনার ইন্টেলিজি সেটিংসে নামকরণ করা ভিএম প্যারামিটার যুক্ত করুন।
  2. এখানে আপনার পোর্ট নম্বরটি নিশ্চিত করুন যে পদক্ষেপ 1 থেকে আপনার জেভিএম সেটিংসের সাথে মেলে।
  3. আপনি যখন এসবিটি চালু করেন, আপনার এটি এসবিটি কনসোল প্লাগইন থেকে করা উচিত (যা আপনি প্রথম ধাপে কনফিগার করেছেন)। আপনি যদি ইন্টেলিজের (কমান্ডলাইনে) বাইরে এসবিটি চালাচ্ছেন তবে আপনাকে পদক্ষেপ 1 থেকে একই ভিএম প্যারামিটার সহ এসবিটি চালু করতে হবে (আমি এটি করিনি; সুতরাং কোনও নির্দেশনা নেই)। এই পদক্ষেপের পরে, এসবিটি এখন চলছে (তবে আপনার কোডটি এখনও নেই) এবং জেভিএম রিমোট ডিবাগিংয়ের জন্য সেটআপ করছে।
  4. এটি ইন্টেলিজ ডিবাগিং সরঞ্জামটি শুরু করে, যা আপনি জেভিএমের সাথে সংযোগ স্থাপন করে যা আপনি পদক্ষেপ 3 এ শুরু করেছিলেন।
  5. শেষ পর্যন্ত, আপনি এসবিটি কনসোলে সংকলন শুরু করুন। অবিচ্ছিন্ন সংকলন কমান্ড সহ যে কোনও সংকলন কমান্ড সহ আপনি এটি করতে পারেন। যদি অবিচ্ছিন্নভাবে পুনরায় সংকলন করা হয়, তবে পুনরায় কম্পাইলটি ঘটবে, তবে কোড এক্সিকিউশনটি ডিবাগার দ্বারা বিরতি দেওয়ার সময়ে নয়।

4
লিঙ্কটি নষ্ট হয়ে গেছে।
অ্যান্ড্রু বাক্নেল

4

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

  1. আপনার প্রকল্প / প্লাগসিন.এসবিটি ফাইলে যেমন sbt.Rivolver রয়েছে তা নিশ্চিত করুন

    addSbtPlugin ("io.spray"% "এসবিটি-রিভলবার"% "0.7.1")

  2. আপনার build.sbt ফাইলটিতে javaoptions সেট করুন:

    javaOptions: = Seq ("- Xdebug", "-Xrunjdwp: পরিবহন = dt_sket, সার্ভার = y, স্থগিত = y, ঠিকানা = 5005")

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

  1. রান / সম্পাদনা কনফিগারেশন মেনুটির মাধ্যমে ইন্টেলিজে একটি ডিবাগার কনফিগারেশন সেট আপ করুন। + বোতাম টিপুন, "রিমোট" বিকল্পটি নির্বাচন করুন। এন্ট্রিগুলি উপরের জাভাওশনগুলির সাথে মেলে কিনা তা নিশ্চিত করুন, বিশেষত পোর্ট অ্যাড্রেস 5005 the কনফিগটিকে 'স্প্রে' এর মতো একটি নাম দিন।

  2. আপনার এসবিটি কনসোল থেকে পুনরায় শুরু কমান্ডটি ব্যবহার করুন। আপনার প্রতিক্রিয়ার আউটপুটে 5005 পোর্ট ঠিকানা দেখতে হবে।

  3. ইন্টেলিজে আপনার ব্রেকপয়েন্টগুলি সেট করুন।

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

  5. সাবধান থাকুন যে স্প্রেতে কিছু পান নির্দেশিকা শুরুতে কার্যকর হয়েছিল বলে মনে হচ্ছে তবে ওয়েবসাইটটিতে কল করার ক্ষেত্রে বারবার নয়।


এই উত্তরের জন্য আপনাকে আশীর্বাদ! মোহন মত কাজ।
ব্যবহারকারী 2770362


3

এটির জন্য উইন্ডোজ লোকের মূল্য কী, %SBT_HOME%\bin\sbt.batনিম্নলিখিত কোডের লাইনগুলি সম্পাদনা করুন এবং সনাক্ত করুন:

:run

"%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -cp "%SBT_HOME%sbt-launch.jar" xsbt.boot.Boot %*
if ERRORLEVEL 1 goto error
goto end

তারপরে তাদের এই কোডটি দিয়ে প্রতিস্থাপন করুন:

FOR %%a IN (%*) DO (
  if "%%a" == "-jvm-debug" (
    set JVM_DEBUG=true
    set /a JVM_DEBUG_PORT=5005 2>nul >nul
  ) else if "!JVM_DEBUG!" == "true" (
    set /a JVM_DEBUG_PORT=%%a 2>nul >nul
    if not "%%a" == "!JVM_DEBUG_PORT!" (
      set SBT_ARGS=!SBT_ARGS! %%a
    )
  ) else (
    set SBT_ARGS=!SBT_ARGS! %%a
  )
)

if defined JVM_DEBUG_PORT (
  set _JAVA_OPTS=!_JAVA_OPTS! -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=!JVM_DEBUG_PORT!
)

call :run %SBT_ARGS%

if ERRORLEVEL 1 goto error
goto end

:run
"%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -cp "%SBT_HOME%sbt-launch.jar" xsbt.boot.Boot %*
goto :eof

-jvm-debugবাশ স্ক্রিপ্ট লঞ্চারে দেখা হওয়ার পরে একই আচরণ পেতে আমি সবচেয়ে ভাল করতে পারি

বিশেষ দ্রষ্টব্য। আমি মনে করি না %SBT_HOME%এই স্ক্রিপ্টের বাইরে আসলেই উপস্থিত রয়েছে, যদি না আপনি আপনার পরিবেশে স্পষ্টভাবে তৈরি করেন তবে আপনি যেভাবেই পয়েন্টটি পান: ডি



3

ফাইল-> সেটিংস-> অন্যান্য সেটিংস-> এসবিটি ভিএম পরামিতি -Xmx512M -XX: ম্যাক্স্পার্মসাইজ = 256M -Xdebug -Xrunjdwp: পরিবহন = ডিটি_সকেট, সার্ভার = ওয়াই, স্থগিত = এন, ঠিকানা = 5005

রান-> কনফিগারেশন সম্পাদনা করুন + টিপুন এবং তারপরে রিমোট প্রেস প্রয়োগ নির্বাচন করুন

এখন এসবিটি কনসোলে (ইনটেলিজ দ্বারা অভ্যন্তরীণ প্রারম্ভিক) আপনি 'রান' কমান্ডটি সম্পাদন করার সময় আপনি দেখতে পাবেন "ট্রান্সপোর্টের জন্য ডিটি_সকেট ঠিকানা শুনছি: 5005"

এবার রান-> ডিবাগ টিপুন। আপনি নীচে ডিবাগ মেনু দেখতে পাবেন। এটিতে ডিবাগার এবং কনসোল দুটি ট্যাব রয়েছে।

পরের লাইন থেকে পরের লাইনে F7 ব্যবহার করুন

আমি স্থগিত করা এন। এটি রান্নার কমান্ডটি চালানোর সময় এটি আটকে গিয়েছিল y



0

আমিও একই সমস্যা পেয়েছি, আমি কীভাবে সমাধান করেছি তা ভাগ করে নিতে চাই। যাইহোক আমি উবুন্টু 14.04 এবং ইন্টেলিজিজ 15 ব্যবহার করছি।

  1. সেটিং -> এসবিটি -> ভিএম প্যারামিটারের পাঠ্য বাক্সে লাইনের নীচে আটকানো হয়েছে:

    -এক্সএক্স: ম্যাক্স্পার্মসাইজ = 384 এম-এক্সডিবাগ-এক্স্রঞ্জডডবপি: পরিবহন = ডিটি_সকেট, সার্ভার = ওয়াই, সাসপেন্ড = এন, ঠিকানা = 5005

  2. ইন্টেলিজজে টার্মিলাল খোলা হয়েছে এবং রান করুন:

    sbt -jvm-debug 5005

    দ্রষ্টব্য: আপনার এই লাইনটি টার্মিনালে দেখতে হবে: "ট্রান্সপোর্টের জন্য dt_sket ঠিকানায় শুনছি: 5005"

  3. কনফিগারেশন সম্পাদনা করুন -> ক্লিক করুন + -> 'রিমোট' নির্বাচন করুন

    I. Give some name example: DebugMyModule
    
    II. All needed configurations will be set automatically, But you just verify. In Command line arguments should look like this "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005".
    
    III. In 'Search Sources in Module's Classpath' text box specify your module in which module your test cases are there.
    
    IV. put 127.0.0.1 host instead of 'localhost'. 'localhost' not working for me.
  4. নির্বাচন DebugMyModule মধ্যে Edit Configurationsতালিকা বাক্স এবং ক্লিক করুন ডিবাগ

    দ্রষ্টব্য: আপনার ডিবাগ ভিউটি খোলা এবং ডিবাগ কনসোলে আপনাকে "লক্ষ্য ভিএম, ঠিকানা:, '127.0.0.1:5005'পরিবহন: 'সকেট'" দেখতে সক্ষম হওয়া উচিত

  5. আপনার টেস্টক্লাসে কয়েকটি পরীক্ষার ক্ষেত্রে ব্রেকপয়েন্টগুলি রাখুন।

  6. আপনি যে টার্মিনালটিতে চলেছেন সেখানে চলে যান sbt -jvm-debug 5005এবং নীচের মতো চলুন

    project <your-module-name>
    it:testOnly package.TestSpec

    উদাহরণস্বরূপ: com.myproject.module.AddServiceTest [স্পেস]

  7. আপনি আপনার পরীক্ষার ক্ষেত্রে ব্রেকপয়েন্টে ডিবাগ শুরু দেখতে পাচ্ছেন started


উবুন্টু 16.04 এবং ইন্টেলিজজে 2017.3 এর সাথে কাজ করে না, ডিবাগার সংযুক্ত হয় তবে ব্রেকপয়েন্টগুলি উপেক্ষা করা হয়।
জোনাথন নিউফিল্ড

টেস্টসুইট ব্রেকপয়েন্টে থামতে পারে না, তবে ব্রেকপয়েন্টটি যদি কোনও মূল পদ্ধতিতে থাকে তবে তা পারে।
শেঙশান জাং

0

অ্যাটাচমি ইন্টেলিজি প্লাগইনটি ডিবাগারটি সংযুক্ত করার সম্ভাব্য দ্রুত পোর্ট নম্বর সহ ফিডাল না করে দ্রুততর:

আপনি আপনার অ্যাপ্লিকেশনটি টার্মিনাল (বা অন্য কোনও উপায়ে) থেকে শুরু করলেও অ্যাটাচমি স্বয়ংক্রিয়ভাবে ইন্টেলিজ ডিবাগারটি সংযুক্ত করবে । আপনাকে Attach to processম্যানুয়ালি অ্যাকশন ট্রিগার করার দরকার নেই ।

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

  1. installer.shঅফিসিয়াল রেপো থেকে স্ক্রিপ্ট ডাউনলোড করুন

    curl -o installer.shhttps://raw.githubusercontent.com/JetBrains/attachme/master/installer.sh
  2. এটি কার্যকর করার অনুমতি দিন chmod u+x installer.sh
  3. এটি দিয়ে চালান ./installer.sh
  4. এটি এজেন্টের অধীনে ইনস্টল করে ফাইল /.config/attachme/agent.jarতৈরি করা উচিত~/.attachme
  5. ~/.attachmeধারণ করতে পরিবর্তন করুন

    AM_JDWP_ARGS="transport=dt_socket,server=y,suspend=y,address=127.0.0.1:0"
    echo Using JDWP arguments ${AM_JDWP_ARGS}
    export JAVA_TOOL_OPTIONS="- javaagent:/Users/mario_galic/.config/attachme/agent.jar -agentlib:jdwp=${AM_JDWP_ARGS}"
    echo "AttachMe configured successfully"
  6. সংশ্লিষ্ট অ্যাটাচাইম প্লাগইন ইনস্টল করুন এবং পুনরায় চালু করুন: IntelliJ | Preferences | Plugins

  7. Attachmeরান কনফিগারেশন তৈরি করুন :Run | Edit configurations... | Add new configuration | Attachme debugger registry | OK

এই এক-অফ শেনানিগানের পরে আমরা একটি ডিবাগারটি স্বয়ংক্রিয়ভাবে সংযুক্ত করতে পারি

  1. Attachmeরান কনফিগারেশন শুরু করুন
  2. source ~/.attachme
  3. টার্মিনাল থেকে অ্যাপ্লিকেশন শুরু করুন, সম্ভবত, sbt "runMain example.Hello"
  4. ডিবাগারটি কোনও ব্রেকপয়েন্টে স্বয়ংক্রিয়ভাবে সংযুক্ত হওয়া এবং থামানো উচিত

-1

রবার্তো টাইলির উপরের উত্তর অনুসারে, তবে উইন্ডোজেও এসবিটি ইনস্টল করার পরে আমাদের নিম্নলিখিত পরিবেশের পরিবর্তনশীলগুলি সেট করতে হবে:

এসবিT_HM
সি: \ প্রোগ্রাম ফাইল (x86) \ এসবিটি \
[বা যেখানেই এসবিটি ইনস্টল করা আছে]

SBT_OPTS
-Xdebug -runjdwp: পরিবহন = dt_sket, সার্ভার = y, স্থগিত = এন, ঠিকানা = 5005

[আরটি-র প্রতি ইন্টেলিজ উদাহরণে]

পথে যোগ করুন:% SBT_Home% \ বিন;% SBT_OPTS%

তারপরে প্রজেক্ট ফোল্ডারে "sbt run -jvm -debug 5005" এর মধ্যে কমান্ড লাইনে নিম্নলিখিতটি চালান।

যদি এটি সঠিকভাবে কাজ করে, কমান্ড লাইন প্রথমে একটি লাইন পুনরায় আউটপুট দেবে "ট্রান্সপোর্টের জন্য শুনছি dt_sket ঠিকানা: 5005"।

ইন্টেলিজজে ব্রেকপয়েন্ট সেট করুন।

ডিবাগার ব্রেকপয়েন্টটি ট্রিগার করতে ব্রাউজারে ওয়েবসাইট খুলুন যেমন " http: // লোকালহোস্ট: 9000 / "।

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