Cara membuat tumpukan jejak setelah kesalahan

20

Saya sysadmin mencoba men-debug situs Drupal. Dalam log server saya, saya bisa melihat Drupal membuat permintaan yang sama berulang kali ke instance Solr kami sampai PHP akhirnya kehabisan memori, dan Apache mengembalikan 500 kesalahan.

Bagaimana cara mengkonfigurasi Drupal untuk mencatat jejak stack di suatu tempat di disk?

Maks
sumber

Jawaban:

15

Anda dapat menggunakan modul Devel , dan pilih salah satu opsi "Krumo Backtrace" yang disediakannya di halaman konfigurasi di admin / config / development / devel.

Krumo Backtrace

Pastikan untuk mengunjungi admin / config / development / logging dan pilih "Kesalahan dan Peringatan" atau "Semua Pesan". Jika Anda memiliki modul Syslog, atau modul logging lainnya yang diaktifkan, Anda mungkin perlu menonaktifkannya dan mengaktifkan modul Dblog.

konfigurasi backtrace

barista amatir
sumber
6
Saya menemukan metode ini gagal memberikan jejak balik krumo untuk pengecualian tertentu, misalnya mengakses properti yang tidak ada pada suatu EntityMetadataWrapperobjek.
artfulrobot
3
Untuk kesalahan EntityMetadataWrapper pergi ke baris dalam kesalahan yang dilaporkan dan masukkan ddebug_backtrace();tepat sebelum baris itu. Jangan lupa untuk menghapusnya tentu saja!
Duncanmoo
Apakah pesan-pesan ini dicatat di suatu tempat atau apakah mungkin untuk membuatnya masuk ke dalam log? Agak tidak berguna pada produksi sebaliknya.
Hjulle
1

di sistem drupal Anda di bagian modul di bawah modul inti mereka adalah modul syslog untuk menyimpan log pada disk. Semoga ini membantu apa yang Anda cari.

samir mankar
sumber
1
Sayangnya, ini tidak berfungsi pada kesalahan fatal (seperti kehabisan memori).
stefgosselin
0

Untuk Drupal 7 dan 8, inspeksi modul sangat bagus untuk backtraces.

Ini dapat menambahkannya ke file atau log di database Drupal daripada menunjukkannya, yang berguna dalam kasus di mana Krumo melacak, ddebug_backtrace()dan solusi lain yang membuat output langsung di layar gagal. Itu adalah kasus untuk kesalahan dan pengecualian terjadi sebelum rendering output dimulai.

Area konfigurasi admin backend untuk diperiksa berisi referensi cepat yang bagus untuk penggunaannya dalam kode.

tanius
sumber
2
Saya mencari-cari di inspectdokumen, tapi saya tidak melihat cara menggunakannya untuk menghasilkan jejak tumpukan kesalahan. Apakah itu sesuatu yang bisa dilakukan?
Ken Williams
0

The Jejak modul bekerja jauh lebih baik untuk situasi saya.

Ini adalah alat sysadmin & pengembang yang menambahkan fasilitas penelusuran luas untuk permintaan kait Drupal, permintaan basis data, dan kesalahan PHP.

Beberapa fitur yang disediakan oleh versi 1.0 modul ini:

  • Keluaran melacak pesan ke file atau syslog (pada platform Unix).
  • Melacak doa kait Drupal dengan filter opsional dan jejak stack.
  • Melacak peringatan dan kesalahan PHP dengan jejak tumpukan penuh opsional.
  • Melacak kueri basis data SQL dengan pemfilteran opsional berdasarkan jenis kueri.
  • Output jejak mencakup informasi pengaturan waktu tingkat mikrodetik.
  • Stack traces menyertakan argumen fungsi yang dilewati dalam sintaks PHP.
  • Output debug opsional mencakup superglobals PHP dan header HTTP.
  • Menentukan kaitan yang memungkinkan modul lain untuk memperluas target keluaran jejak.
deweydb
sumber
1
Sekarang modul ini tidak lagi dalam pengembangan dan sepertinya tidak ada versi D7 yang tersedia ... :(
tanius