Tôi có ứng dụng Python đa luồng chạy trên máy chủ Linux. Tôi có thể sử dụng Debug Server của PyDev để gỡ lỗi từ xa vào nó, mà có vẻ như một nguồn tài nguyên gỡ lỗi rất có giá trị. Tuy nhiên, có một vấn đề mà tôi thấy đang ngăn nó trở nên hữu ích như tôi muốn.Bắt PyDev đình chỉ hoạt động trên các chủ đề khác với MainThread
Trong khi ứng dụng của tôi đang chạy trên máy chủ, tôi có thể đi vào Eclipse trên hộp khác, tạm dừng MainThread, nhận được dấu vết ngăn xếp tốt nhất vào thời điểm đó, sau đó tiếp tục thực hiện. Thật tuyệt vời. Tuy nhiên, khi tôi thử nó trên một trong các chủ đề con, nút đình chỉ màu xám ra nhưng không có dấu vết ngăn xếp và tất cả mọi thứ chỉ tiếp tục chạy như bình thường. Tôi có thể thấy trong cửa sổ Debug rằng có một chủ đề con và nó là PID, nhưng không thể thực sự kiểm soát nó hoặc xem nó là gì. Nhấp chuột phải và thử "ngăn xếp sao chép" hữu ích "chỉ mang lại cho tôi" Thread-4 - pid29848_seq5 ".
Điểm ngắt có vẻ hoạt động tốt. Nếu một chuỗi con truy cập vào một trong số đó, tôi có thể xem qua và xem các biến và như vậy. Tuy nhiên, việc sử dụng hiệu quả đó yêu cầu tôi phải có một điểm quan tâm cụ thể trong mã. Tôi thực sự đang tìm cách chạy ứng dụng của mình và khi nó trở thành một trạng thái bất thường, hãy sử dụng PyDev để xem những gì đang diễn ra.
Tôi có vấn đề gì với thiết lập của mình không? Đây có phải chỉ là một hạn chế của PyDev tôi chống lại? Làm thế nào tôi có thể thấy những gì đang xảy ra với các chủ đề con?
Tôi đang gặp vấn đề tương tự. Eclipse, PyDev, Django, máy chủ từ xa bằng lệnh manage.py runserver --noautoreload. Không may mắn, tôi không thể đặt điểm ngắt trong bất kỳ chế độ xem nào. –
Vì vậy, tôi đã thêm time.sleep (10000) vào một trong các phương thức get view của mã python của tôi, và PyDev không có stack hiển thị, tôi có thể thấy thread nhưng không có stack. –
Vì vậy, tôi đã nhận được đến điểm mà tôi đã có thể nhìn thấy ngăn xếp bên trong các chủ đề bằng cách thêm: pydevd.settrace (suspend = False) ngay trước điểm ngắt, bất kỳ vị trí nào trong chuỗi trước mã với điểm ngắt sẽ thực hiện , nhưng không chắc chắn tại sao điều này là cần thiết bởi vì theo tài liệu riêng của python cho settrace() "Thiết lập một chức năng theo dõi cho tất cả các chủ đề bắt đầu từ các mô-đun luồng." Sẽ được nhìn vào điều này hơn nữa. –