في هذا القسم ، جرب Java Remote Debugging وتسجيل الأشياء البسيطة للبدء. حتى لو كان سجلًا!
اكتب برنامجًا بسيطًا واكتبه في جرة ورميه في خادم بعيد لتشغيله ، ومحاكاة تشغيل الخادم البعيد. خذ برنامج Java Calling Shell Script Sridge Job Job Complication كمثال. الرمز المصدر هو كما يلي (البرنامج التالي هو رمز مثال بسيط ، لا تهتم بمواصفات الرمز):
استيراد java.io.inputStream ؛ فئة عامة javashell {public static void main (string [] args) rems {try {string grant = "chmod u+x submit-job.sh" ؛ وقت التشغيل = Runtime.getRuntime () ؛ عملية GrantProc = Runtime.exec (Grant) ؛ int resultcode = grantproc.waitfor () ؛ system.out.println (resultcode) ؛ GrantProc = Runtime.exec ("./ submit-job.sh") ؛ resultcode = grantproc.waitfor () ؛ system.out.println (resultcode) ؛ inputStream in = GrantProc.getInputStream () ؛ Byte [] Buffer = New Byte [1024] ؛ رمز int ؛ بينما ((Code = in.Read (Buffer ، 0 ، Buffer.Length))! = -1) {system.out.print (سلسلة جديدة (Buffer ، 0 ، Code)) ؛ } / ** * تمنع الحلقة الميتة مصحح الأخطاء من الخروج قبل توصيلها (اختبر وظيفة معلمة التعليق) * / system.out.println ("تم تنفيذ نص shell ، وستبدأ مهمة الطباعة المحددة!") ؛ int i = 0 ؛ بينما (صحيح) {thread.sleep (2000) ؛ system.out.println ("هذا هو" th " + (++ i) +" حلقة ثانية! ") ؛}} catch (استثناء e) {system.out.println (" هذا هو الإثارة! ") ؛} أخيرًا {}}}}بعد الالتزام به للخادم البعيد ، قم بتشغيله:
انسخ الرمز على النحو التالي: java -xdebug -xnoagent -djava.compiler = none -xrunjdwp: transport = dt_socket ، address = 9999 ، server = y ، append = y -jar javashell.jar.jar
سيتم حظر البرنامج وانتظار الاتصال بالاتصال. في هذا الوقت ، يمكننا استخدام Eclipse للتصحيح عن بُعد:
انقر فوق Debugger لتوصيل وتتبع الرمز المصدر لتشغيله:
هناك إخراج عن بُعد ، مما يثبت أن البرنامج البعيد يتتبع تنفيذ تصحيح الأخطاء:
في هذه المرحلة ، نكممل عملية تصحيح الأخطاء. بعد ذلك ، جرب الحالة التي تعليق المعلمة = n:
انسخ الرمز على النحو التالي: java -xdebug -xnoagent -djava.compiler = none -xrunjdwp: transport = dt_socket ، address = 9999 ، server = y ، supernd = n -jar javashell.jar.jar
في هذا الوقت ، ستجد أن البرنامج البعيد لا يحظر وينتظر اتصال تصحيح الأخطاء ، لكن البرنامج ينفذ بشكل طبيعي:
في هذا الوقت ، يمكننا استخدام مصحح الأخطاء عن بُعد لـ Eclipse للتصحيح عن بُعد ، ولكن تجدر الإشارة إلى أنه لا يمكن ضرب نقطة التوقف المحلية إلا في الرمز البعيد الذي لم يتم تنفيذه أو الرمز الذي يتم تنفيذه. على سبيل المثال ، يمكننا كسر النقاط في الحلقة الميتة (الحلقة الميتة هي الرمز الذي يتم تنفيذه طوال الوقت):
ثم ابدأ التصحيح:
ابق عند نقطة الإيقاف. ثم اتبع موقف نقطة الإيقاف لمواصلة عمل تصحيحنا. في هذه المرحلة ، يجب أن تعرف دور معلمة التعليق:
في معلمات تصحيح JVM ، هناك معلمة تسمى "تعليق" ، والتي لها قيمتان ، "Y" أو "N".
إذا كنت ترغب في تصحيح الأخطاء في البداية ، فقم بتعيين المعلمة على "تعليق = y" ، بحيث سيتم الاتصال عن بُعد بتطبيقات Java عن بُعد.
إذا كنت ترغب في تشغيل المشروع أولاً ثم قم بتوصيل Eclipse ، فيمكنك تعيين المعلمة على "COPRED = N" ، بحيث سيتم تشغيل تطبيق Java بشكل طبيعي ، ثم سيبدأ Eclipse الاتصال عن بُعد.
المزيد من تفاصيل المعلمة:
-xdebug تمكين تصحيح الأخطاء.
-xnoagent تعطيل الافتراضي sun.tools.debug debugger.
-djava.compiler = لا شيء يحظر تحميل برنامج التحويل البرمجي Jit.
-XRUNJDWP يحمل مثال تنفيذ مرجع JPDA لـ JDWP.
يتم استخدام النقل للتواصل بين التصحيحات والعمليات المستخدمة من قبل VMs.
DT_Socket Socket نقل.
DT_SHMEM مشترك نقل الذاكرة ، Windows فقط.
Server = y/n ما إذا كان يجب تنفيذ VM كخادم تصحيح الأخطاء.
العنوان = 3999 رقم المنفذ لخادم التصحيح ، رقم المنفذ الذي يستخدمه العميل للاتصال بالخادم.
تعليق = y/n ما إذا كان لبدء VM بعد أن يقوم عميل التصحيح بإنشاء اتصال.
مفاتيح اختصار تصحيح الأخطاء:
خطوة F5 في
F6 خطوة أكثر
F7 خطوة
F8 تابع إلى نقطة الإيقاف التالية
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.