Direkt zum Inhalt
Bild
Drupal Debugging Techniques Drupal Debug OpenSense Labs

Drupal-Debug: Effektive Techniken und Tools

AI-Translated

Drupal

Heute besprechen wir, wie man Drupal debuggt. Das bedeutet, die Werkzeuge und Methoden zu finden, um komplexe Probleme in praktikable Lösungen zu verwandeln.

Debugging-Tools können Ihnen mehr Informationen über den Status und Kontext Ihrer Anwendung bei der Ausführung verschiedener Aufgaben liefern. Sie benötigen Drupal-Debugging-Tools in der Regel aus zwei Hauptgründen: Entweder funktioniert Ihre Website oder eine bestimmte Funktion nicht richtig, oder Sie möchten verstehen, wie eine bestimmte Funktion funktioniert. 

Zu verstehen, wonach man suchen und wo man anfangen muss, erfordert Übung und eine systematische Methode. Wenn Sie sich an das Drupal-Debugging gewöhnt haben, wird es schneller und einfacher, da Sie häufige Probleme erkennen und wissen, wie Sie diese beheben können. 

In diesem Blogbeitrag werden wir effektive Tools und Drupal-Debugging-Techniken besprechen, darunter das Devel-Modul, Twig-Debugging, Backtrace und mehr. 

Bevor wir fortfahren, werfen Sie einen Blick auf unsere Dienstleistungen, wenn Sie über einen Umstieg auf Drupal 10 nachdenken. 

Noch heute auf Drupal 10 migrieren! 

Nun, fangen wir an!

Drupal-Debugging: Backtrace 

Das Debuggen von PHP-Problemen auf einer Drupal-Website kann von einfachen Korrekturen bis hin zu großen Herausforderungen reichen. PHP verfügt über ein Debugging-Tool namens debug_backtrace, das die Abfolge des Codes anzeigt, der ausgeführt wird, bevor die Backtrace-Funktion verwendet wird. 

Stellen Sie sich vor: Wenn Sie eine Seite öffnen, stoßen Sie möglicherweise auf eine Fehlermeldung, die so aussieht: 

warning: Invalid argument supplied for foreach() in /modules/field/field.module on line 966. 

Beim Drupal-Debugging mit Backtrace ist es schwierig, das Problem allein anhand der Fehlermeldung zu verstehen. Eine Möglichkeit, die Ursache des Fehlers herauszufinden, besteht darin, Drupal-Debugging-Code zur relevanten Datei in Drupal hinzuzufügen. 

  1. Öffnen Sie die benötigte Datei in Ihrem Doc-Root. Im angegebenen Beispiel ist dies

/modules/field/field.module

2. Gehen Sie zu der in der Fehlermeldung genannten Zeilennummer.  

3. Fügen Sie am Anfang der Funktion diesen Code hinzu:  

Hinweis: Dies kann dazu führen, dass Ihre Website nicht mehr funktioniert. Tun Sie dies nur in einer Entwicklungs- oder Staging-Umgebung. 

var_dump(debug_backtrace()); die ();

Dies zeigt alle PHP-Funktionen und deren Argumente, die die aktuelle Funktion aufgerufen haben. Typischerweise helfen Ihnen die technischen Details im Drupal-Debugging-Backtrace dabei, zu identifizieren, welches Modul oder welche Funktion den Fehler verursacht. 

Lesen Sie auch:

1. Eigene Twig-Erweiterung in Drupal erstellen

2. XDebug auf Ihrem Server konfigurieren

3. Drupal 11 Upgrade: Checkliste für die Migration von Drupal 7 auf 11 

4. Wichtige Module für den Start mit einer Drupal 9 Website

Drupal-Debugging: Twig

Drupal Twig-Debugging ist ein modernes, schnelles und sicheres Template-Framework, das Entwickler dabei unterstützt, neue Templates effizient zu erstellen und bestehende zu verwalten. Es gibt viele Unterschiede zwischen PHP-Templates und Twig. Drupal Twig-Debugging verfügt über eine eigene Syntax und Codierungsregeln. 

Das Aktivieren des Twig-Debuggings in Drupal 10 und 11 ist einfach. Es ermöglicht Entwicklern, Template-Namen und Theme-Vorschläge schnell zu finden, was bei der Erstellung neuer Template-Benennungssysteme hilft. Jede Drupal 9-Website verfügt über eine default.services.yml-Datei, die sich im Ordner sites/default befindet. 

Prozess zur Aktivierung des Drupal Twig-Debuggings in Drupal 9: 

Es gibt mehrere Möglichkeiten, das Drupal Twig-Debugging-Theme zu aktivieren. Dies ist die einfachste Methode. Befolgen Sie einfach diese Schritte nacheinander, um das Twig-Debugging-Template in Drupal durch Bearbeiten von services.yml zu aktivieren. 

  1. Gehen Sie zum Ordner /sites/default 

  1. Duplizieren Sie die Datei default.services.yml und benennen Sie sie in services.yml um. 

  1. Öffnen Sie die Datei services.yml und suchen Sie nach 'twig.config'. 

  1. Aktivieren Sie den Debug-Modus. 

(Hinweis: auto_reload auf true und cache auf false zu setzen, sind optionale Einstellungen.) 

5. Gehen Sie zum Ordner /sites. 

  1. Bearbeiten Sie die Datei development.services.yml und fügen Sie diesen Code ein. 

parameters: 

         twig.config:  

                      debug:  

                      true auto_reload: true  

                      cache: false 

7. Erstellen Sie eine Kopie der Datei example.settings.local.php und benennen Sie sie in settings.local.php um. 

8. Entfernen Sie den Kommentar aus der nächsten Codezeile. 

$settings['cache']['bins']['render'] = 'cache.backend.null'; 

9. Öffnen Sie die Datei settings.php und suchen Sie nach dem folgenden Codeabschnitt. 

if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { include $app_root . '/' . $site_path . '/settings.local.php';  
} 

10. Fügen Sie es am Ende der Datei hinzu. 

11. Leeren Sie die Caches und Sie sind fertig. 

Überprüfen Sie den Inspektor Ihres Browsers, um alle verfügbaren Template-Vorschläge im Code anzuzeigen und zu identifizieren, welche Templates derzeit verwendet werden. 

Drupal Twig-Debugging mit Drupal Console aktivieren 

Wenn Sie die Drupal Console verwenden, können Sie all dies mit einem einzigen Befehl erledigen: drupal site:mode dev  

Stellen Sie sicher, dass Sie vor dem Hochladen Ihrer Website wieder zu den Produktionseinstellungen wechseln. Führen Sie drupal site:mode prod aus, bevor Sie sie auf den Server hochladen. 

Prozess zur Aktivierung des Drupal Twig-Debuggings in Drupal 10: 

Pfad --> admin/config/development/settings

Drupal Twig-Debugging Drupal-Debugging OpenSense Labs

Drupal-Debugging: Devel-Modul 

Das Devel Drupal-Debugging-Modul bietet eine einzigartige Möglichkeit, Drupal zu debuggen, im Vergleich zu traditionellen Tools wie Xdebug. Anstatt die Ergebnisse sofort anzuzeigen, speichert es die Details von Variablen, einschließlich ihrer verschachtelten Eigenschaften und Methoden, in einem dauerhaften Log. Dieses Log fungiert wie das Watchdog-Modul und führt eine konstante Aufzeichnung der Debugging-Daten.

Das Modul verwendet das Devel-Modul für eine klare Drupal-Debugging-Ausgabe und arbeitet mit anderen Modulen zusammen, um einen vollständigen Überblick über Klassenstrukturen und -methoden zu bieten, was den Debugging-Prozess verbessert. 

Das Devel Drupal-Debugging-Modul ist ein bekanntes Entwicklermodul, das viele Tools für Entwicklung und Debugging bietet und gängige Aufgaben erleichtert.  

Devel Generate ist ein Tool, das Beispielinhalte für Drupal-Websites erstellt. Dazu gehören Menüpunkte, Taxonomie-Begriffe und Nodes. Es ist hilfreich, um Ihre Drupal-Website mit gefälschten Benutzern, Inhalten, Bildern und mehr zu testen oder vorzuführen. Das Devel-Modul für Drupal kann all diese Inhalte problemlos für Sie generieren.

Die Tabelle zeigt, wie verschiedene Versionen des Devel Drupal-Debugging-Moduls mit spezifischen Versionen des Drupal-Kerns zusammenarbeiten.

Versionskompatibilität
Devel-Version Drupal-Core
5.2+ 10
5.0,5.1 9,10
4.x 8.9+,9
8.x-2.x 8.x

 

Beachten Sie, dass das Devel Drupal-Debugging-Modul und seine Submodule für die lokale Entwicklung gedacht sind und nicht auf Live-Produktionswebsites verwendet werden sollten.

Wie man Devel für einfaches Debugging verwendet? 

Das Devel Drupal-Debugging-Modul bietet verschiedene Tools für einfaches Drupal-Debugging, wobei dpm() die beliebteste Funktion ist. 

dpm($variable): Zeigt eine Variable zur Überprüfung auf dem Bildschirm an.  

Hier ist ein einfacher Prozess, um Ihren Code mit dem Devel Drupal-Debugging-Modul zu korrigieren: 

Schritt 1: Problem finden  

Lokalisieren Sie den Teil Ihres Codes, von dem Sie glauben, dass er ein Problem aufweist. Beschreiben Sie klar, was der Code erreichen soll und was er derzeit tut. 

Schritt 2: dpm() zur Überprüfung von Variablen verwenden  

Fügen Sie die Funktion dpm() an der Stelle in Ihrem Code ein, an der Sie den Wert einer Variablen überprüfen möchten. Zum Beispiel: 

$node = Node::load(1); 

dpm($node); 

Die Ausführung dieses Befehls zeigt den Inhalt der Variablen $node auf der Seite an, sodass Sie deren Eigenschaften und Werte überprüfen können. 

Schritt 3: Abfragen mit dpq() überprüfen 

 $query = \Drupal::database()->select('node', 'n') 
  ->fields('n', ['title']); 
  dpm($query); 

Schritt 4: Ergebnisse überprüfen  

Nachdem Sie die Ausgabe von dpm() erhalten haben, überprüfen Sie die tatsächlichen Werte mit den erwarteten. Wenn Ergebnisse nicht mit Ihren Erwartungen übereinstimmen, liegt wahrscheinlich ein Fehler in Ihrem Code vor. 

Schritt 5: Code verbessern  

Verwenden Sie die gesammelten Informationen, um Ihre Codelogik anzupassen. Verfeinern Sie den Code so lange, bis alle Probleme behoben sind. Das bedeutet, es sollten keine Fehler mehr auftreten und die tatsächlichen Ergebnisse sollten mit den erwarteten übereinstimmen.  

Wenn Sie diese Schritte befolgen und dpm() verwenden, können Sie Probleme in Ihrem Drupal-Code finden und beheben. 

Drupal-Debugging: Xdebug 

Die Verwendung von Xdebug für Profiling und Tracing ist eine fortschrittliche Methode, die Drupal-Entwicklungsprozesse erheblich verbessert. 

Xdebug ist ein leistungsstarkes und flexibles Debugging-Tool für PHP. Es liefert Entwicklern wichtige Informationen darüber, wie ihre Anwendungen funktionieren, und hilft ihnen, langsame Teile zu finden, die Code-Geschwindigkeit zu verbessern und die Gesamteffizienz zu steigern. 

Profiling mit Xdebug bedeutet, genau zu untersuchen, wie lange verschiedene Funktionen in einer Drupal-Anwendung zur Ausführung benötigen und wie viele Ressourcen sie verbrauchen. Durch die Erstellung detaillierter Berichte können Entwickler genau sehen, wie jede Funktion die Leistung beeinflusst, was ihnen hilft, sich auf die wichtigsten Bereiche für Verbesserungen zu konzentrieren. 

Xdebug zeichnet eine detaillierte Zeitleiste von Funktionsaufrufen auf, die Parameter und Rückgabewerte anzeigt, was bei der gründlichen Analyse der Codeausführung hilft. 

Es bietet einen großen Vorteil durch seine einfache Integration in bekannte Entwicklungsumgebungen. Entwickler können Xdebug schnell so einrichten, dass es mit ihren bevorzugten IDEs funktioniert, was zu einem problemlosen Debugging-Prozess führt. Diese Integration verbessert die Fähigkeit, Leistungsprobleme zu finden und zu beheben, wodurch Drupal-Anwendungen stärker und reaktionsfähiger werden.  

Die Remote-Debugging-Funktion von Xdebug ist hilfreich für Entwickler, die in Teams oder gemeinsam arbeiten. Sie ermöglicht einfache Leistungsüberprüfungen und Fehlerbehebungen in verschiedenen Entwicklungsumgebungen.

Entdecken Sie unsere Dienstleistungen, wenn Sie von Ihrem bestehenden Content-Management-System zu Drupal migrieren möchten.

Jetzt zu Drupal migrieren!

Drupal-Debugging: Drupal-Migrations-Debugging 

Drupal-Migrationen können recht schwierig zu beheben sein. 

Sie haben häufig mit großen Datenmengen zu tun. Das Verschieben einer kleinen Anzahl von Elementen, wie 5 oder 10, ist einfacher manuell per Kopieren und Einfügen zu erledigen.  

Wenn Sie versuchen, Tausende von Elementen zu verschieben, kann es eine Weile dauern, bis Sie merken, dass Sie das falsche Zielfeld gewählt haben. Dieser Prozess ist nicht effizient.

Drupal-Migrationen mögen auf den ersten Blick einfach aussehen, sind aber recht kompliziert. Diese Komplexität ergibt sich aus der Tatsache, dass die Migrate API Entwicklern eine unkomplizierte Methode zur Einrichtung von Migrationsprozessen bietet.  

Viele Subsysteme, wie Entitäten, Datenbank und Plugins, arbeiten während einer Migration zusammen. Selbst eine einfache Migration umfasst viele Klassen.  

Migrationen können auch Fehler verursachen, die korrigiert werden müssen, was zeigt, warum es wichtig ist, zu lernen, wie man sie gut behebt.

Einfaches Debugging 

Wir beginnen mit einer einfachen Methode, um Fehler während der Migration zu identifizieren.  

Um mögliche Fehler zu reduzieren, sollten wir die Migration in kleinen, schrittweisen Schritten verwalten. Das bedeutet, wir werden langsam vorgehen und die zu verschiebenden Daten nach und nach erhöhen.

  1. Überprüfung Ihrer Migrationsbeschreibungsdatei 

Die ersten Schritte in unserem Migrations-Debugging-Prozess umfassen die Betrachtung von zwei Hauptproblemen, die häufig bei vielen Migrationen auftreten. Bevor wir fortfahren, werfen wir also einen kurzen Blick darauf:

  • Leerzeichen: Zusätzliche Leerzeichen könnten Probleme mit der Migrationsbeschreibungsdatei verursachen. Wir werden schnell alle Zeilen in der Datei überprüfen, um zusätzliche Leerzeichen zu finden. 

  • Einrückungsfehler: Die Migrationsbeschreibungsdatei liegt im YAML-Format vor, das Daten in einem Schlüssel-Wert-System mit Hierarchieebenen anordnet. Jede Ebene muss um zwei Leerzeichen nach rechts eingerückt werden. Einrückungsfehler sind häufig und können beim Verarbeiten der Datei zu Fehlern führen. 

  1. Konfigurationselemente aktualisieren 

Wir müssen auch ein weiteres Problem bei der Behebung unserer Migration angehen: einen einfacheren Weg zu finden, das Konfigurationsobjekt zu aktualisieren, das aus der Migrationsbeschreibungsdatei im Pfad config/install stammt. 

Wenn das Modul installiert ist, wird ein Konfigurationsobjekt erstellt, das in Ihrer Drupal-Installation gefunden werden kann. Während des Debuggings müssen wir die Datei ändern und aktualisieren, um zu überprüfen, ob unsere Änderungen erfolgreich waren. 

Drush und Drupal Console können beide verwendet werden, um spezifische Importe von Konfigurationsdateien auszuführen, wobei die speziellen Importfunktionen jedes Tools genutzt werden.

Verwendung von Drupal Console 

drupal config:import:single --directory="/modules/custom/migration_google_sheet/config/install" --file="migrate_plus.migration.taxonomy_google_sheet.yml" 

Verwendung von Drush 

drush cim --partial --source=/folder/ 

Wir können aktive Konfigurationsobjekte auch mit Drush oder Drupal Console entfernen. 

drush config-delete "migrate_plus.migration.taxonomy_google_sheet" 
drupal config:delete active "migrate_plus.migration.taxonomy_google_sheet" 

Wenn wir uns für die Nutzung der Drupal-Benutzeroberfläche entscheiden, stehen uns Alternativen wie das beigesteuerte Modul Config Delete zur Verfügung, das unter drupal.org/config_delete erhältlich ist. 

Dieses Modul verbessert das interne Konfigurationssynchronisationsmenü, indem es weitere Optionen hinzufügt, um Konfigurationselemente aus unserer Drupal-Installation zu entfernen.

Dazu laden Sie das Modul einfach mit Composer herunter und aktivieren es mit Drush oder Drupal Console.

composer require drupal/config_delete 
drush en config_delete –y 

Diese Methode ermöglicht es uns, Konfigurationsobjekte wiederherzustellen, ohne Probleme mit den aktuellen in der Datenbank gespeicherten Versionen zu verursachen. 

Wenn Sie Ihre Konfigurationsversionen aktualisieren und vergleichen möchten, könnte das Modul Configuration Update Manager eine gute Option sein.

  1. Durchschnittliches Debugging mit Migrate Devel 

Wir müssen einige mittlere Techniken anwenden, um mehr Details über den Prozess zu erhalten. An diesem Punkt werden wir verschiedene Module und Plugins verwenden, um die Art und Weise zu verbessern, wie wir den Migrationsprozess sehen.

Migrate Devel 

Migrate Devel ist ein beigesteuertes Modul, das die Migrationsprozesse durch zusätzliche Funktionalitäten, einschließlich neuer Optionen für Drush, erweitert. Das Migrate Devel-Modul bietet 2 Optionen, die mit dem Drush-Befehl migrate:import (mim) von Migrate Tools genutzt werden können. 

drush migrate:import <migration> --migrate-debug 
drush migrate:import <migration> --migrate-debug-pre 

--migrate-debug: gibt jede Zeile während der Migration aus (MigrateEvents::POST_ROW_SAVE) 

--migrate-debug-pre: gleiche Idee, aber bevor der Prozess auf die Zeile angewendet wird (MigrateEvents::PRE_ROW_SAVE) 

Das Debugging-Prozess-Plugin 

Das Migrate Devel-Modul führt ein neues Prozess-Plugin namens `debug` ein. Dieses Plugin funktioniert, indem es den empfangenen Wert direkt an das Terminal ausgibt. Das `debug`-Plugin bietet mehrere Vorteile im Vergleich zum `log`-Plugin, das in der Kern-Migrate-API verfügbar ist. 

  • Die `print_r()`-Funktion verwaltet sowohl Arrays als auch skalare Werte effektiv.  

  • Es ermöglicht eine klare Unterscheidung zwischen Debugging-Code, der entfernt werden muss, und Logging-Plugin-Konfigurationen, die intakt bleiben sollten. 

  • Dieser Ansatz ist zeiteffizient, da er die Notwendigkeit eliminiert, den Befehl `migrate:messages` auszuführen, um auf die protokollierten Werte zuzugreifen. 

Sie können das `debug`-Plugin als Ersatz für `log` verwenden. Es gibt ein spezifisches Szenario, in dem die Verwendung von `debug` besonders vorteilhaft ist. Wenn es innerhalb einer Prozess-Plugin-Kette eingesetzt wird, ermöglicht es Ihnen, die Transformation von Elementen in jeder Phase zu beobachten. 

  1. Beenden einer fehlgeschlagenen Migration 

Falls die Migration fehlschlägt, kann beim erneuten Versuch, die Migration auszuführen, der folgende Fehler auftreten: 

Migration MIGRATION_NAME ist mit einem anderen Vorgang beschäftigt: Importing 

Führen Sie den folgenden Befehl aus, um die Migrationssperre aufzuheben, vorausgesetzt, Migrate Tools oder Migrate Run ist installiert. 

$ drush migrate:reset-status MIGRATION_NAME       # oder drush mrs MIGRATION_NAME 

Wenn Migrate Tools oder Migrate Run nicht installiert wurden, verwenden Sie bitte: 

$ drush php-eval "var_dump(Drupal::keyValue('migrate_status')->set('MIGRATION_NAME', 0));" 
NULL 

Wenn Sie beim Versuch, den oben genannten Befehl auszuführen, den folgenden Fehler erhalten: 

\Drupal::$container ist noch nicht initialisiert. \Drupal::setContainer() muss mit einem echten Container aufgerufen werden. 

  1. Begrenzung und individuelle Migrationen  

Die Installation von Migrate Tools ist eine Voraussetzung für die Ausführung der folgenden Befehle:  

Bei umfangreichen Migrationen ist es vorteilhaft, die Anzahl der importierten Zeilen zu begrenzen. Dieser Ansatz erhöht die Geschwindigkeit der Import- und Rollback-Prozesse und ermöglicht gleichzeitig präzisere Feldzuordnungen und Callbacks.  

$ drush migrate:import --limit=10 MIGRATION_NAME

Die folgenden Befehle erleichtern den Import und das Rollback einer spezifischen Migrationseinheit für Entwicklungszwecke:  

$ drush migrate:import --idlist=123 MIGRATION_NAME  
$ drush migrate:rollback --idlist=123 MIGRATION_NAME 

Der Bezeichner entspricht typischerweise der primären ID der zu migrierenden Entität; zusätzliche Details finden sich jedoch in den Datenbanktabellen migrate_map_MIGRATION_NAME, insbesondere in der Spalte sourceId. 

Lesen Sie auch:

1. Drupal SDC vs. Storybook: Was ist der Unterschied?

2. Drupal SDC: Vorteile von Single Directory Components 

3. Starshot: Drupals neue CMS-Initiative

4. SDC: Storybook & Single Directory Component integrieren

Wichtige Erkenntnisse: 

  1. Das Debuggen von PHP-Problemen auf einer Drupal-Website kann von einfachen Lösungen bis hin zu erheblichen Schwierigkeiten reichen. 

  1. Twig ist eine schnelle, moderne und sichere Template-Engine, die Entwicklern hilft, neue Templates einfach zu erstellen und bestehende effektiv zu verwalten. 

  1. Devel ist ein beliebtes Entwicklungsmodul, das verschiedene Tools für Entwicklung und Debugging bereitstellt und viele Routineaufgaben vereinfacht. 

  1. Xdebug ist ein leistungsstarkes Tool für Profiling und Tracing, das den Entwicklungsprozess in Drupal erheblich verbessert. 

  1. Drupal-Migrationen mögen auf den ersten Blick einfach aussehen, sind aber in Wirklichkeit recht kompliziert. 

Abonnieren

Ready to start your digital transformation journey with us?

Verwandte Blogs

Zurück von der DrupalCon Atlanta 2025: Ein Meilenstein für OpenSense Labs

Zurück von der DrupalCon Atlanta 2025: Ein Meilenstein für OpenSense Labs

„Fit. Schnell. Für die Ewigkeit gebaut.“ Das war nicht nur ein Slogan, sondern die Denkweise, mit der wir zur DrupalCon…

Erklärbare KI-Tools: SHAPs Stärke in der KI

Explainable AI tools Explainable AI And SHAP OpenSense Labs

Wissen Sie, was erklärbare KI-Tools sind? Erklärbare KI-Tools sind Programme, die zeigen, wie eine KI ihre Entscheidungen…

KI-Chatbots: Präzision und Persönlichkeit in Perfektion

Creating AI Chatbot OpenSense Labs

In der Welt der künstlichen Intelligenz ist die Entwicklung eines KI-Chatbots, der nicht nur akkurate Informationen liefert…