> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Einen Fehlerbericht End-to-End debuggen

export const UseCaseHero = ({title, description, prompt, category, features, devinUrl, agent, intent, playbookId, type}) => {
  const encodedPrompt = encodeURIComponent(prompt || '');
  const tag = 'docs-use-case-gallery';
  const utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=hero-cta';
  const agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  const devinHref = type === 'schedule' ? 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + (prompt ? '&prompt=' + encodedPrompt : '') : type === 'review' ? 'https://app.devin.ai/review?' + utm : agent === 'ada' ? 'https://app.devin.ai/search?' + utm + '&noSubmit=true' + (prompt ? '&prompt=' + encodedPrompt : '') : devinUrl ? devinUrl.includes('?') ? devinUrl + '&' + utm + agentParams : devinUrl + '?' + utm + agentParams : prompt ? 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encodedPrompt : 'https://app.devin.ai/?' + utm + agentParams;
  const buttonLabel = type === 'schedule' ? 'Schedule in Devin ↗' : type === 'review' ? 'Set Up Devin Review ↗' : agent === 'advanced' ? 'Try in Devin ↗' : agent === 'dana' ? 'Try in Dana ↗' : agent === 'ada' ? 'Try in Ask Devin ↗' : 'Try in Devin ↗';
  const featureList = features ? features.split(',').map(f => f.trim()) : [];
  return <div className="uc-hero">
      <div className="uc-hero-inner">
        <div className="uc-hero-left">
          <h1 className="uc-hero-title">{title}</h1>
          <p className="uc-hero-desc">{description}</p>
          <div>
            <a href={devinHref} target="_blank" rel="noopener noreferrer" className="try-in-devin-btn">
              {buttonLabel}
            </a>
          </div>
        </div>
        <div className="uc-hero-meta">
          <div className="uc-meta-item">
            <span className="uc-meta-label">Author</span>
            <span className="uc-meta-value">Cognition</span>
          </div>
          <div className="uc-meta-item">
            <span className="uc-meta-label">Category</span>
            <span className="uc-meta-value">{category}</span>
          </div>
          {featureList.length > 0 && <div className="uc-meta-item">
              <span className="uc-meta-label">Features</span>
              <span className="uc-meta-value">{featureList.join(', ')}</span>
            </div>}
        </div>
      </div>
    </div>;
};

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

<UseCaseHero title="Einen Bug-Report End-to-End debuggen" description="Gib Devin einen Bug-Report mit Datadog-Logs und Datenbankzugriff und erhalte eine Root-Cause-Analyse sowie einen Fix-PR." prompt="Verwende den Datadog MCP, um den häufigsten Fehler in der Produktion der letzten 24 Stunden zu finden. Rufe den vollständigen Stack-Trace und die zugehörigen Logs ab, frage die Read-only-Datenbankreplikat nach relevanten Daten ab, ermittle die Root Cause im Code und eröffne einen PR mit einem Fix und einem Regressionstest." category="Incident Response" features="MCP" />

<div className="uc-detail-wrapper">
  <Tip>Eine ausführlichere Anleitung zur Datadog-Integration finden Sie [hier](/de/enterprise/integrations/datadog).</Tip>

  <Steps>
    <Step title="Mit Datadog verbinden">
      Devin benötigt Zugriff auf Ihre Datadog-Logs, um nach Fehlern im Zusammenhang mit dem Bug zu suchen. Falls Sie das noch nicht getan haben, aktivieren Sie den Datadog MCP:

      1. Gehen Sie zu **Settings > Connections > MCP servers** und suchen Sie **Datadog**
      2. Klicken Sie auf **Enable**, wählen Sie Ihre Datadog-Site/Region aus und geben Sie zwei Header an:
         * `DD-API-KEY` — von Ihrer [Datadog-Seite „API keys“](https://app.datadoghq.com/organization-settings/api-keys)
         * `DD-APPLICATION-KEY` — von Ihrer [Datadog-Seite „application keys“](https://app.datadoghq.com/organization-settings/application-keys)

      Sobald die Verbindung steht, kann Devin Logs durchsuchen, Fehlertraces abrufen und Probleme mit Deployments korrelieren – alles innerhalb der Sitzung. Vollständige Einrichtungsdetails finden Sie im [MCP Marketplace](/de/integrations/overview).
    </Step>

    <Step title="Gewähren Sie Devin Lesezugriff auf die Datenbank">
      Bei Datenfehlern – falsche Werte, fehlende Felder, fehlschlagende Abfragen – ist Devin deutlich effektiver, wenn es den Datenzustand direkt verifizieren kann. Übergeben Sie einen schreibgeschützten Connection-String als [Secret](/de/product-guides/secrets):

      1. Gehen Sie zu **Settings > Secrets** und fügen Sie ein neues Secret hinzu:
         * **Name**: `DATABASE_READ_REPLICA_URL`
         * **Value**: `postgresql://readonly_user:password@read-replica.internal:5432/production`
      2. Fügen Sie eine Notiz hinzu wie: *"Schreibgeschützte Verbindung zur Read-Replica der Produktionsdatenbank. Nur für SELECT-Abfragen geeignet."*

      Alternativ können Sie eine Datenbank-MCP (PostgreSQL, MySQL, etc.) unter **Settings > Connections > MCP servers** verbinden – Devin kann beide Ansätze verwenden, um Ihre Daten abzufragen.

      <Tip>Verwenden Sie immer eine Read-Replica oder einen Benutzer mit ausschließlich SELECT-Berechtigungen. Devin benötigt keinen Schreibzugriff, um einen Bug zu untersuchen. Wenn Sie befürchten, dass ressourcenintensive Abfragen die Performance beeinträchtigen, richten Sie Devin auf eine dedizierte Read-Replica oder eine bestehende Analytics-Replica aus, die von Ihrer Produktionsdatenbank getrennt ist.</Tip>
    </Step>

    <Step title="Sende den Fehlerbericht an Devin">
      Füge den Bug-Report direkt in eine Devin-Session ein. Nimm so viel Kontext auf, wie der\*die Meldende dir gegeben hat – wann es angefangen hat, wer betroffen ist, was genau falsch läuft und wo. Für eine strukturierte Analyse verwende das [`!triage`-Template-Playbook](https://app.devin.ai/settings/playbooks/14fed18b89d44713a26e673cf258f548?utm_source=docs\&utm_medium=use-case-gallery) – dupliziere es und passe die Schritte an deinen Stack an.

      <PromptBlock>
        ```txt Fehler auf Abrechnungsseite debuggen theme={null}
        Bug-Report vom Support: Pro-Tarif-Nutzer sehen „undefined“ anstelle ihres
        Firmennamens auf der Abrechnungsseite. Das begann nach dem Deployment
        letzten Freitag (ungefähr 2026-02-13 18:00 UTC).

        Schritte zur Untersuchung:
        1. Verwende Datadog, um Error-Logs für den Billing-Service seit Freitag
           abzurufen – suche nach Null-Reference-Fehlern oder Änderungen in API-Responses
        2. Frage das Read-Replica ab, um zu prüfen, ob Pro-Tarif-Nutzer tatsächlich
           einen company_name-Wert haben: SELECT id, company_name, plan FROM users WHERE plan = 'pro' LIMIT 20
        3. Prüfe den git log für das Deployment am Freitag – was hat sich an der
           Abrechnungsseite oder in der User-API-Antwort geändert?
        4. Identifiziere die Grundursache und behebe sie
        5. Füge einen Regressionstest hinzu, der diesen Fehler abfangen würde,
           falls er erneut auftritt
        6. Starte die App lokal und überprüfe im Browser, ob die Abrechnungsseite
           korrekt gerendert wird
        7. Öffne einen PR mit dem Fix
        ```
      </PromptBlock>

      Je konkreter der Fehlerbericht, desto schneller findet Devin die Antwort. „Seit dem Deployment am Freitag“ ermöglicht es Devin, das Datadog-Zeitfenster einzugrenzen. „Pro-Tarif-Nutzer“ sagt Devin genau, welche Datensätze abgefragt werden sollen.
    </Step>

    <Step title="Devin analysiert und behebt">
      Mit angebundenem Datadog und eingerichtetem Datenbankzugriff führt Devin eine vollständige Untersuchung durch:

      **Ruft Datadog-Logs ab** — Sucht seit Freitag nach Fehlern im Billing-Service, gefiltert nach Servicename und Fehlerstatus. Findet einen Anstieg von `TypeError: Cannot read property 'name' of undefined` ab 18:12 UTC am Deployment-Tag.

      **Fragt die Datenbank ab** — Führt `SELECT id, company_name, plan FROM users WHERE plan = 'pro' LIMIT 20` gegen das Read-Replica aus. Bestätigt, dass Pro-Benutzer *tatsächlich* `company_name`-Werte haben — die Daten sind in Ordnung, der Bug steckt also im Code.

      **Verfolgt die Code-Änderung** — Prüft `git log --since="2026-02-13"` und findet den Commit `a1b2c3d`, der die Antwort der User-API refaktorisiert und `company` in `organization` umbenannt hat. Die Billing-Seite unter `src/pages/billing/BillingHeader.tsx` referenziert weiterhin `user.company.name`.

      **Implementiert den Fix** — Aktualisiert `BillingHeader.tsx`, um `user.organization?.name ?? 'Your Company'` zu verwenden, und fügt einen Regressionstest hinzu, der die Komponente sowohl mit der alten als auch mit der neuen API-Response-Struktur rendert.

      **Verifiziert im Browser** — Startet den Dev-Server, öffnet die Billing-Seite im integrierten Browser von Devin und bestätigt, dass der Firmenname nun für einen Testbenutzer korrekt gerendert wird.

      **Öffnet einen PR** mit dem Fix, dem Test und einer Beschreibung, die die Root Cause und die Auswirkungen erklärt (alle Pro- und Enterprise-Nutzer, \~350 Accounts).
    </Step>

    <Step title="Nächste Schritte">
      Sobald der PR mit dem Fix zusammengeführt ist, kannst du Devin bitten, nach verwandten Issues zu suchen oder Monitoring hinzuzufügen:

      <PromptBlock>
        ```txt Finde weitere Verweise auf das alte Feld theme={null}
        Die eigentliche Ursache war, dass user.company in der API-Antwort in
        user.organization umbenannt wurde. Durchsuche das gesamte Frontend nach
        weiteren Verweisen auf "user.company" und aktualisiere sie alle.
        ```
      </PromptBlock>

      Wenn du möchtest, dass Devin sich beim nächsten Mal etwas aus dieser Untersuchung merkt, sag es ihm einfach — z. B. *"Remember that the user API uses `user.organization`, not `user.company`."* Devin schlägt einen [Knowledge](/de/product-guides/knowledge)-Eintrag vor, den du überprüfen und speichern kannst. So starten zukünftige Sitzungen bereits mit dem Kontext, den dein Team sich schon erarbeitet hat.
    </Step>
  </Steps>
</div>
