คำถามติดแท็ก trace

5
วิธีการติดตามโปรแกรมจาวา?
ในฐานะผู้ดูแลระบบฉันบางครั้งต้องเผชิญกับสถานการณ์ที่โปรแกรมทำงานผิดปกติในขณะที่ไม่ได้สร้างข้อผิดพลาดหรือสร้างข้อความแสดงข้อผิดพลาดที่ไร้สาระ ในอดีต - ก่อนที่จาวาจะเข้ามา - มีสองมาตรการต่อต้าน: หากไม่มีสิ่งใดช่วย - RTFM ;-) ถ้า 1. ไม่ช่วย - ติดตามการเรียกของระบบและดูว่าเกิดอะไรขึ้น ฉันมักจะใช้strace -fสำหรับงานนี้กับ Linux (ระบบปฏิบัติการอื่นมีเครื่องมือติดตามที่คล้ายกัน) ตอนนี้ในขณะนี้มักจะทำงานได้ดีสำหรับโปรแกรมที่ล้าสมัยการติดตามจะเลือนมากเมื่อทำแบบเดียวกันบนjava -process มีการเรียกระบบจำนวนมากดูเหมือนไม่เกี่ยวข้องกับการกระทำจริงใด ๆ ที่มันเป็นเรื่องยากที่จะค้นหาผ่านการถ่ายโอนข้อมูลดังกล่าว มีวิธีที่ดีกว่าในการทำเช่นนั้น (หากซอร์สโค้ดไม่สามารถใช้ได้)?
25 linux  java  trace 

2
จะทราบได้อย่างไรว่ากระบวนการใดที่เขียนถึง STDOUT
ฉันมีกระบวนการทำงานสองกรณี หนึ่งในนั้นคือ "frEAkIng oUT!" และข้อผิดพลาดการพิมพ์ไม่หยุดที่ STDOUT ฉันต้องการฆ่ากระบวนการที่เสียหาย แต่ฉันต้องทำให้แน่ใจว่าฉันจะไม่ยุติกระบวนการที่ผิด พวกเขาทั้งคู่เริ่มต้นพร้อมกันและใช้topฉันสามารถเห็นพวกเขาทั้งคู่ใช้หน่วยความจำและ CPU ในปริมาณเท่ากัน ฉันไม่สามารถหาสิ่งใดที่ชี้ให้เห็นว่ากระบวนการใดที่ทำงานไม่ดี สิ่งที่ปลอดภัยที่สุดคือการพิจารณาว่ากระบวนการใด / pid ที่เขียนไปยัง STDOUT มีวิธีใดที่จะทำเช่นนั้น?

2
strace สำหรับการเรียกใช้ไลบรารี
ฉันรู้จัก strace ซึ่งเป็นประโยชน์อย่างยิ่งสำหรับการดูการโทรของระบบ มีเทียบเท่าที่สามารถติดตามการโทรไปยังห้องสมุดภายนอกหรือไม่ ตัวอย่างเช่นฉันกำลังพยายามแก้ไขข้อผิดพลาดบางอย่างของ SSLeay ด้วยไบนารีของบุคคลที่สามที่ฉันไม่สามารถเข้าถึงรหัสได้ (และใครเป็นผู้พัฒนาที่ไม่ตอบสนอง) ฉันเชื่อว่าฉันถูกจับปัญหา แต่ฉันไม่สามารถทดสอบได้โดยไม่เห็นว่าข้อมูลที่ถูกตรวจสอบลายเซ็นถูกจัดรูปแบบสำหรับการส่งออกไปยัง SSLeay

2
การสังเกตการเขียนฮาร์ดดิสก์ในพื้นที่เคอร์เนล (พร้อมไดรเวอร์ / โมดูล)
ขออภัยล่วงหน้าหากโพสต์นี้ค่อนข้างหนาแน่น / ยุ่ง แต่ฉันมีเวลายากที่จะกำหนดได้ดีกว่า ... โดยทั่วไปฉันต้องการที่จะศึกษาว่าเกิดอะไรขึ้นกับการเขียนฮาร์ดดิสก์และฉันต้องการที่จะรู้ว่า: ความเข้าใจของฉันด้านล่างถูกต้องหรือไม่ถ้าไม่ฉันจะไปไหนผิด มีเครื่องมือที่ดีกว่าในการ "บันทึก" บันทึกข้อมูลเกี่ยวกับทุกด้านที่เกิดขึ้นบนพีซีระหว่างการเขียนดิสก์หรือไม่? รายละเอียดเพิ่มเติม - ก่อนอื่นระบบปฏิบัติการที่ฉันใช้คือ: $ uname -a Linux mypc 2.6.38-16-generic #67-Ubuntu SMP Thu Sep 6 18:00:43 UTC 2012 i686 i686 i386 GNU/Linux ดังนั้นฉันมีดังต่อไปนี้ง่าย ๆ (เช่นการตรวจสอบตามปกติสำหรับความล้มเหลวของการดำเนินงานจะถูกข้าม) โปรแกรม C พื้นที่ผู้ใช้wtest.c: #include <stdio.h> #include <fcntl.h> // O_CREAT, O_WRONLY, S_IRUSR int main(void) { char filename[] …

2
FreeBSD 10 กิจกรรมดิสก์ติดตาม
มีวิธีใดบ้างในการค้นหากระบวนการซึ่งเขียนลงบนดิสก์เป็นระยะ ๆ (ตาม hdd led) บน FreeBSD 10 ด้วย ZFS (อาจเปลี่ยน ZFS เป็นโหมดการบันทึก verbose)? lsof และยูทิลิตี้สถิติรวมอื่น ๆ ในทันทีดูเหมือนจะไม่สามารถจับอะไรเลยเนื่องจากช่วงเวลาสั้น ๆ ของการเข้าถึงดิสก์
9 freebsd  disk  zfs  lsof  trace 

2
ไฟล์ใดในเคอร์เนลระบุ fork (), vfork () ... เพื่อใช้การเรียกระบบ sys_clone ()
เมื่อ ltrace ใช้สำหรับการติดตามการเรียกของระบบฉันเห็นว่า fork () ใช้ sys_clone () มากกว่า sys_fork () แต่ฉันไม่สามารถหาแหล่งที่มาของลินุกซ์ที่มีการกำหนดไว้ โปรแกรมของฉันคือ #include<stdio.h> main() { int pid,i=0,j=0; pid=fork(); if(pid==0) printf("\nI am child\n"); else printf("\nI am parent\n"); } และเอาท์พุท ltrace คือ SYS_brk(NULL) = 0x019d0000 SYS_access("/etc/ld.so.nohwcap", 00) = -2 SYS_mmap(0, 8192, 3, 34, 0xffffffff) = 0x7fe3cf84f000 SYS_access("/etc/ld.so.preload", 04) = -2 SYS_open("/etc/ld.so.cache", …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.