سؤال

لقد وجدت خطأً في تطبيق يؤدي إلى تجميد JVM تمامًا.سيوفر تتبع المكدس الذي تم إنتاجه معلومات قيمة للمطورين وأود استعادتها من وحدة تحكم Java.عندما يتعطل JVM، يتم تجميد وحدة التحكم ولا يمكنني نسخ النص الموجود بعد الآن.

هل هناك طريقة لتوجيه وحدة تحكم Java مباشرة إلى ملف أو أي وسيلة أخرى للوصول إلى مخرجات وحدة التحكم لتطبيق Java؟

تحديث:نسيت أن أذكر، دون تغيير الرمز.أنا اختبار يدوي.

التحديث 2:هذا موجود ضمن نظام التشغيل Windows XP وهو في الواقع تطبيق لبدء الويب.أنابيب الإخراج

javaws jnlp-url
لا يعمل (ملف فارغ).

هل كانت مفيدة؟

المحلول

في الواقع يمكن تفعيلها اقتفاء أثر في لوحة تحكم جافا.سيؤدي هذا إلى توجيه أي شيء ينتهي به الأمر إلى وحدة تحكم Java في ملف التتبع.

ستنتهي ملفات السجل في:

  • <user.home>/.java/deployment/log على نظام التشغيل Unix/Linux
  • <مجلد بيانات تطبيق المستخدم>\Sun\Java\Deployment\log على نظام التشغيل Windows
  • /~/Library/Caches/Java/log في OS X

نصائح أخرى

و(إذا كنت تستطيع تعديل التعليمات البرمجية) يمكنك تعيين الحقل System.out إلى قيمة مختلفة:

System.setOut(new PrintStream(new FileOutputStream(fileName)));

إذا كنت تقوم بتشغيل برنامج نصي (استدعاء البرنامج عبر java) من Unix يمكن أن تفعله:

/path/to/script.sh >& path/to/output.log

في ماك يمكن العثور 10.8.2 السجلات في /Users/<userName>/Library/Application Support/Oracle/Java/Deployment/log/.

وقبل أن يكون لديك لتمكين تسجيل من لوحة التحكم جافا. خيار "Enable logging" هو في علامة التبويب "Advanced". يمكن أن تبدأ لوحة تحكم جافا من "System preferences".

وحدة المجمدة يعني على الارجح الى طريق مسدود (يمكن أن يعني أيضا إلقاء المتكررة استثناء). يمكنك الحصول على تفريغ كومة باستخدام jstack. jps قد تجعل العثور على العملية أسهل.

scroll top