Cách tạo dấu vết ngăn xếp khi có lỗi


20

Tôi đang cố gắng gỡ lỗi một trang web Drupal. Trong nhật ký máy chủ của tôi, tôi có thể thấy Drupal thực hiện các yêu cầu tương tự lặp đi lặp lại với cá thể Solr của chúng tôi cho đến khi PHP hết bộ nhớ và Apache trả về lỗi 500.

Làm cách nào tôi có thể định cấu hình Drupal để ghi lại dấu vết ngăn xếp ở đâu đó trên đĩa?

Câu trả lời:


15

Bạn có thể sử dụng Devel mô-đun, và chọn một trong các tùy chọn "Krumo backtrace" nó cung cấp trong trang cấu hình của nó tại admin / config / phát triển / devel.

Backtrace Krumo

Đảm bảo truy cập quản trị / cấu hình / phát triển / ghi nhật ký và chọn "Lỗi và cảnh báo" hoặc "Tất cả tin nhắn". Nếu bạn có mô-đun Syslog hoặc bất kỳ mô-đun ghi nhật ký nào được bật, bạn có thể cần phải tắt nó và bật mô-đun Dblog.

cấu hình backtrace


6
Tôi thấy phương pháp này thất bại trong việc đưa ra nền tảng krumo cho một số ngoại lệ nhất định, ví dụ: truy cập vào một thuộc tính không tồn tại trên một EntityMetadataWrapperđối tượng.
artfulrobot

3
Đối với lỗi EntityMetadataWrapper đi đến dòng trong lỗi được báo cáo và chèn ddebug_backtrace();ngay trước dòng đó. Đừng quên loại bỏ điều đó!
Duncanmoo

Là những thông điệp này được ghi lại ở đâu đó hoặc có thể làm cho chúng đi vào một bản ghi? Nó là loại vô dụng trên sản xuất khác.
Hjulle

1

trong hệ thống drupal của bạn trong phần mô-đun dưới các mô-đun lõi, mô-đun syslog của họ để lưu trữ nhật ký trên đĩa. hy vọng nó sẽ giúp những gì bạn đang tìm kiếm.


1
Điều này không hoạt động trên các lỗi nghiêm trọng (chẳng hạn như lỗi bộ nhớ), thật không may.
stefgosselin

0

Đối với Drupal 7 và 8, kiểm tra mô-đun là tuyệt vời cho backtraces.

Nó có thể thêm chúng vào các tệp hoặc nhật ký trong cơ sở dữ liệu Drupal thay vì hiển thị chúng, điều này rất hữu ích trong trường hợp quay ngược Krumo ddebug_backtrace()và các giải pháp khác tạo đầu ra trực tiếp trên màn hình không thành công. Đó là trường hợp cho các lỗi và ngoại lệ xảy ra trước khi bắt đầu kết xuất.

Vùng cấu hình phụ trợ quản trị để kiểm tra chứa một tham chiếu nhanh đẹp cho việc sử dụng mã của nó.


2
Tôi chọc vào các inspecttài liệu, nhưng tôi không thấy cách nào sử dụng nó để tạo ra dấu vết ngăn xếp do lỗi. Đó có phải là cái gì đó nó có thể làm?
Ken Williams

0

Các vết Module làm việc tốt hơn cho hoàn cảnh của tôi.

Đây là một công cụ sysadmin & dành cho nhà phát triển, bổ sung các phương tiện theo dõi rộng rãi cho các yêu cầu hook Drupal, truy vấn cơ sở dữ liệu và lỗi PHP.

Một số tính năng được cung cấp bởi phiên bản 1.0 mô-đun này:

  • Xuất ra các thông báo theo dõi đến một tệp hoặc syslog (trên nền tảng Unix).
  • Theo dõi các yêu cầu móc nối Drupal với bộ lọc tùy chọn và theo dõi ngăn xếp.
  • Theo dõi các cảnh báo và lỗi PHP với dấu vết ngăn xếp đầy đủ tùy chọn.
  • Theo dõi các truy vấn cơ sở dữ liệu SQL với bộ lọc tùy chọn theo loại truy vấn.
  • Đầu ra dấu vết bao gồm thông tin thời gian ở mức micro giây.
  • Dấu vết ngăn xếp bao gồm các đối số được truyền của hàm trong cú pháp PHP.
  • Đầu ra gỡ lỗi tùy chọn bao gồm các siêu tệp PHP và các tiêu đề HTTP.
  • Xác định một hook cho phép các mô-đun khác mở rộng các mục tiêu đầu ra theo dõi.

1
Bây giờ module này không còn trong phát triển và dường như không có phiên bản D7 có sẵn ... :(
tanius
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.