2010-01-27 36 views
10

Tôi đang cố gắng sử dụng "strace -p" để đính kèm vào quá trình JBoss đang chạy. JBoss đang sử dụng Java JDK 1.5.0_15. Thật không may, điều này không làm việc - Tôi chỉ nhận được một kết quả futex đơn():
Không thể "strace -p" trên quy trình JBoss đang chạy

# strace -p 3388 
Process 3388 attached - interrupt to quit 
[ Process PID=3388 runs in 32 bit mode. ] 
futex(0x8f18f7c, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...> 

strace làm việc cho tất cả các chương trình khác nhưng không JBoss. Nó xuất hiện để làm việc tốt khi tôi khởi động quá trình thông qua strace. Nó chỉ không hoạt động khi tôi cố gắng gắn vào một tiến trình đang chạy.

Tôi đang sử dụng Linux 64-bit 2.6.18 với JDK Java 32 bit (RedHat Enterprise Linux 5.3 nếu nó quan trọng).

Update # 1:

Tôi đã thử chạy nó với "-d", nhưng sản lượng không xuất hiện để được bất kỳ sâu sắc hơn, ít nhất là với tôi:


[[email protected]]# strace -d -e verbose=all -p 3388 
Process 3388 attached - interrupt to quit 
[wait(0x137f) = 3388] 
pid 3388 stopped, [SIGSTOP] 
[wait(0x57f) = 3388] 
pid 3388 stopped, [SIGTRAP] 
[ Process PID=3388 runs in 32 bit mode. ] 
futex(0x8f18f7c, FUTEX_WAIT_PRIVATE, 1, NULL 
+0

thuộc về superuser? –

+0

@Aidan, tôi nghĩ rằng nó nên ở đây giả sử curious_george đang cố gắng để gỡ lỗi một số công việc dev. –

+0

Tôi chưa bao giờ nghe nói về SuperUser cho đến bây giờ, nhưng để tránh việc đăng tải chéo, tôi sẽ để lại câu hỏi này ở đây. Tôi lý luận rằng hầu hết các lập trình viên J2EE đã sử dụng strace với JBoss –

Trả lời

11

Nếu có nhiều chủ đề trong quá trình đó, bạn sẽ cần phải cung cấp strace nhiều tùy chọn -p, chỉ định ID của từng chủ đề. Có vẻ như bạn đang truy tìm thành công chuỗi gốc ban đầu và không làm gì ngoài việc đợi một số chủ đề khác hoàn tất.

(Lý do nó hoạt động khi bạn bắt đầu lệnh từ strace là theo mặc định, strace chọn các quy trình con mới được tạo và theo dõi chúng).

+0

I ' m thực sự truy tìm chủ đề con. Mặc dù tôi đã cố gắng stracing thread cha và thread con, nhưng tôi đã không nhận được bất kỳ xa hơn. Chuỗi chủ đề chỉ hiển thị cuộc gọi wait4(), như mong đợi. –

+0

Bạn có chắc chắn * chỉ có một chuỗi con không? Điều đó nghe có vẻ đáng ngờ đối với một quá trình 'java' (lưu ý rằng các chủ đề riêng lẻ không hiển thị trong' ps' theo mặc định). Hãy xem trong '/ proc//task/'. – caf

+0

(Hoặc thử 'ps -eLm') – caf

0

Có bạn cố gắng sử dụng strace -d -p NNN để có được một số đầu ra gỡ lỗi strace?

Có thể thêm một chi tiết?

Có strace được cài đặt setuid vào thư mục gốc để bạn có thể xem xét bất kỳ quy trình nào không?

+0

Tôi đã thử chạy nó bằng "-d", như đã lưu ý trong bản chỉnh sửa số 1 của tôi ở trên (tôi thấy định dạng đó không hoạt động như tôi mong đợi trong phần này) –

9

lẽ bạn có thể thử điều này:

strace -F -p PID

Các vấn đề liên quan