Start · Sprachen · JavaScript · Referenz · console.debug()

console.debug()

Methode

Gibt eine Nachricht auf der Logstufe „debug“ (ausführlich/verbose) in der Konsole aus – ideal für Diagnose-Ausgaben, die im Normalfall ausgeblendet bleiben.

seit JavaScript Baseline: alle Browser; Node.js 8+ (als Alias von Kategorie: webapi

Signatur

console.debug(...data)

Beschreibung

console.debug() funktioniert wie console.log(), ordnet die Ausgabe aber der Logstufe „debug“ zu. In Chromium-basierten Browsern landet sie in der Stufe „Verbose“ (Ausführlich), die in den DevTools standardmäßig ausgeblendet ist. Firefox und Safari zeigen Debug-Meldungen als eigene Kategorie an, die sich ebenfalls filtern lässt.

Damit eignet sich die Methode gut für detaillierte Diagnose-Ausgaben wie Zustandsänderungen, Zwischenwerte oder Netzwerk-Details. Solche Meldungen braucht man bei der Fehlersuche, im Alltag würden sie die Konsole aber zumüllen. Entwickler können sie über den Logstufen-Filter gezielt einblenden, ohne den Code zu ändern.

Du kannst beliebig viele Werte übergeben. Objekte erscheinen interaktiv aufklappbar. Ist das erste Argument ein String, darfst du Formatierungsplatzhalter wie %s, %d, %o, %O und %c (CSS, nur im Browser) verwenden.

In Node.js ist console.debug() nur ein Alias für console.log() und schreibt auf stdout. Eine echte Filterung nach Logstufe gibt es dort nicht.

Parameter

Name Typ Default Beschreibung
$...data any[] Beliebig viele Werte, die nacheinander ausgegeben werden. Ist das erste Argument ein String, darf es Formatierungsplatzhalter enthalten (%s, %d/%i, %f, %o, %O, %c). Die folgenden Argumente füllen diese Platzhalter der Reihe nach.

Rückgabewert

Typ
void
Beschreibung
Kein Rückgabewert (undefined).

Beispiele

Einfache Debug-Ausgabe mit mehreren Werten

const user = { id: 42, name: 'Anna', roles: ['admin'] };
console.debug('Benutzer geladen:', user);
// In Chrome nur sichtbar, wenn die Stufe "Verbose" aktiv ist
Benutzer geladen: {id: 42, name: 'Anna', roles: Array(1)}

Formatierungsplatzhalter verwenden

const items = 3;
const total = 59.9;
console.debug('Warenkorb: %d Artikel, Summe %f €', items, total);
Warenkorb: 3 Artikel, Summe 59.9 €

Debug-Ausgaben per Schalter steuern

const DEBUG = new URLSearchParams(location.search).has('debug');
const debug = DEBUG ? console.debug.bind(console, '[app]') : () => {};

const fetchData = async (url) => {
  debug('Starte Request:', url);
  const res = await fetch(url);
  debug('Status:', res.status);
  return res.json();
};

fetchData('https://jsonplaceholder.typicode.com/todos/1')
  .then((data) => console.log(data.title));
[app] Starte Request: https://jsonplaceholder.typicode.com/todos/1 [app] Status: 200 delectus aut autem

Zwischenwerte in einer Schleife protokollieren

const prices = [19.99, 5.5, 12];
const sum = prices.reduce((acc, price, i) => {
  console.debug(`Schritt ${i}: acc=${acc}, price=${price}`);
  return acc + price;
}, 0);
console.log('Summe:', sum.toFixed(2));
Schritt 0: acc=0, price=19.99 Schritt 1: acc=19.99, price=5.5 Schritt 2: acc=25.49, price=12 Summe: 37.49

// Wichtig · Fallstricke

  • Standardmäßig unsichtbar: In Chrome und Edge werden console.debug()-Meldungen erst angezeigt, wenn im Logstufen-Menü der Konsole „Verbose“ aktiviert ist. Das ist ein häufiger Grund für die Frage: „Warum sehe ich meine Ausgabe nicht?“
  • Node.js: Dort ist die Methode ein reiner Alias für console.log() und schreibt auf stdout. Wenn du nach Stufen filtern willst, nimm eine Logging-Bibliothek (z. B. pino, debug) oder util.debuglog().
  • Produktion: Debug-Ausgaben bleiben im ausgelieferten Code aktiv und kosten Rechenzeit, vor allem wenn große Objekte serialisiert werden. Außerdem können sie sensible Daten wie Tokens oder personenbezogene Daten preisgeben. Entferne sie deshalb beim Build, z. B. mit drop_console in Terser oder pure: ['console.debug'] in esbuild.
  • Live-Referenzen: Objekte werden im Browser als Referenz protokolliert. Beim Aufklappen siehst du den aktuellen Zustand, nicht den zum Zeitpunkt der Ausgabe. Für eine Momentaufnahme hilft z. B. console.debug(structuredClone(obj)) oder JSON.stringify(obj).
  • Die Methode ist im WHATWG Console Standard festgelegt und wird von allen modernen Browsern sowie in Web Workern unterstützt.