Puncte:1

Cum obțin mesajul de eroare netrunchiat de la dblog?

drapel ru

„Mesajele de jurnal recente” sunt foarte utile pentru a urmări erorile de pe site-uri. Deși acest lucru funcționează excelent pentru erorile din codul PHP, este adesea inutil pentru erorile din codul Twig. De exemplu. Am acest mesaj de eroare în jurnalul meu:

Eroare utilizator: „atribute” este o cheie de matrice de randare nevalidă în Drupal\Core\Render\Element::children() (Zeile 98 în /web/core/lib/Drupal/Core/Render/Element.php)

#0 /web/core/includes/bootstrap.inc(346): _drupal_error_handler_real(256, '"attributes" is...', '/var/www/vhosts...', 98) #1 [funcție internă]: _drupal_error_handler(256, '"atribute" este...', '/var/www/vhosts...', 98, Array)

(încă 47 de rânduri aici)

Această urmă de strack are 47 de puncte, majoritatea din nucleul Drupal. Eroarea este evident în tema mea personalizată.

#11 /web/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('themes/custom/w...', Array)

Din cauza acestei linii, bănuiesc că unul dintre șabloanele mele personalizate Twig este incorect, dar nu îmi pot da seama care dintre ele, din cauza numelui de fișier trunchiat.

Cum pot obține mesajul de eroare complet al unei anumite linii din urmărirea stivei? Dacă aș cunoaște numele complet al fișierului menționat în rândul #11, m-ar ajuta foarte mult să-mi repar eroarea.

Puncte:2
drapel cn

Obțineți rezultatul backtracing-ului încorporat PHP. Drupal folosește debug_backtrace() pentru afisare si Excepție::getTraceAsString a fost adăugat pentru autentificare în Drupal 8.2.x. Vezi schimba înregistrarea. Cea de-a doua este o metodă de urmărire inversă foarte rapidă și eficientă, nu rămâne fără memorie atunci când manipulează codul profund imbricat, care este de obicei pentru șabloanele de randare Drupal. Cu toate acestea, este posibil să nu vă ofere toate informațiile pe care le căutați.

Dacă aveți nevoie de o urmărire a stivei complet funcțională, utilizați Xdebug pentru a captura excepția (nu este nevoie de punct de întrerupere).

https://marketplace.visualstudio.com/items?itemName=xdebug.php-debug

xdebug

drapel ru
Dar Xdebug nu prea ajută într-un caz ca acesta. Setarea unui punct de întrerupere pentru o funcție de bază care este apelată de un milion de ori în timpul unei solicitări este nerezonabilă.
drapel cn
@Hudri presupunând că aveți un IDE decent care nu ar trebui să fie o problemă, de exemplu https://www.jetbrains.com/help/phpstorm/debugging-with-php-exception-breakpoints.html
4uk4 avatar
drapel cn
@Hudri, erorile Twig sunt detectabile în Symfony. Ați putea scrie propriul cod pentru a formata backtrace și pentru a suprascrie /core/lib/Drupal/Core/EventSubscriber/ExceptionLoggingSubscriber.php
drapel ru
Oh, mulțumesc mult, încă nu știam Exception Breakpoints în PHPstorm, acest lucru va ajuta foarte mult

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.