Debugging mit KI-Sprachunterstützung
Die KI-gestützten Debugging-Funktionen von Cursor helfen Ihnen, Probleme schneller zu identifizieren und zu beheben, indem sie intelligente Analysen und Vorschläge liefern.
Erste Schritte
KI-Debugging-Unterstützung aktivieren
- Öffnen Sie die Befehlspalette (Strg/Cmd + Shift + P)
- Geben Sie "Enable AI Debug" ein
- Wählen Sie die Option, um die Funktion zu aktivieren
Grundfunktionen
1. Fehleranalyse
Wenn Sie auf einen Fehler stoßen, kann die KI bei der Analyse helfen:
// Fehler im Code
const user = getUserData();
console.log(user.name.toLowerCase());
// KI-Analyse
// ⚠️ Mögliche Null-Referenz
// - user könnte null/undefined sein
// - user.name könnte null/undefined sein
// Vorschlag: Null-Prüfungen hinzufügen
2. Schnelle Korrekturen
Die KI schlägt Lösungen für häufige Probleme vor:
// Vorher: Typfehler
const handleClick = (event) => {
console.log(event.value);
};
// KI-Vorschlag
const handleClick = (event: React.MouseEvent) => {
console.log(event.currentTarget.value);
};
Erweiterte Funktionen
1. Laufzeitanalyse
Die KI kann das Laufzeitverhalten analysieren:
# Leistungsproblem
def process_data(items):
result = []
for item in items:
result.append(transform(item))
return result
# KI-Vorschlag
def process_data(items):
return [transform(item) for item in items]
# 🚀 Leistungsverbesserung:
# - List Comprehension ist schneller
# - Reduziert Speicherzuweisung
2. Kontextbewusstes Debugging
Die KI versteht den Kontext Ihrer Codebasis:
// Ursprünglicher Code mit Fehler
async function validateUser(token) {
const user = await getUser(token);
return user.isValid;
}
// KI-Debug-Analyse
/**
* Gefundene Probleme:
* 1. Keine Fehlerbehandlung für ungültige Tokens
* 2. Keine Typprüfung für das Benutzerobjekt
* 3. Fehlende Null-Prüfung für user
*/
// KI-Lösungsvorschlag
async function validateUser(token: string): Promise<boolean> {
try {
const user = await getUser(token);
return user?.isValid ?? false;
} catch (error) {
console.error('Benutzervalidierung fehlgeschlagen:', error);
return false;
}
}
Debugging-Workflows
1. Interaktives Debugging
Verwenden Sie KI während Debugging-Sitzungen:
// Setzen Sie KI-gestützte Haltepunkte
debugger; // KI analysiert Variablenzustände
// KI-Debug-Konsole
> ai.analyze(variableName)
> ai.suggest.fix()
> ai.explain.state()
2. Log-Analyse
KI kann bei der Analyse komplexer Logs helfen:
# Komplexe Log-Ausgabe
[2024-03-20T10:15:30] Fehler: Verbindung verweigert...
[2024-03-20T10:15:31] Wiederholungsversuch 1...
[2024-03-20T10:15:32] Fehler: Zeitüberschreitung...
# KI-Analyse
"""
Problem erkannt: Netzwerkverbindungsproblem
- Anfängliche Verbindungsverweigerung
- Zeitüberschreitung beim Wiederholungsversuch
Vorschlag: Netzwerkeinstellungen und Firewall-Regeln überprüfen
"""
Sprachspezifische Funktionen
JavaScript/TypeScript
- JavaScript
- TypeScript
// Typinferenz
function processData(data) {
// KI schlägt Typen basierend auf der Verwendung vor
return data.map(item => item.value);
}
// Typprüfung
interface DataItem {
value: string;
}
function processData(data: DataItem[]) {
return data.map(item => item.value);
}
Python
# Typhinweise und Laufzeitprüfungen
def calculate_average(numbers: List[float]) -> float:
# KI schlägt Eingabevalidierung vor
if not numbers:
raise ValueError("Leere Liste übergeben")
return sum(numbers) / len(numbers)
Bewährte Praktiken
1. Fehlervermeidung
Verwenden Sie KI, um potenzielle Fehler zu erkennen:
// KI-vorgeschlagene Fehlervermeidung
function divideNumbers(a: number, b: number): number {
// KI fügt Sicherheitsprüfungen hinzu
if (typeof a !== 'number' || typeof b !== 'number') {
throw new TypeError('Argumente müssen Zahlen sein');
}
if (b === 0) {
throw new Error('Division durch Null');
}
return a / b;
}
2. Codequalität
KI hilft, die Codequalität zu verbessern:
// Vorher
function fn(x) {
var res = x + 1;
return res;
}
// Nachher (KI-verbessert)
const increment = (value: number): number => {
return value + 1;
};
3. Leistungsoptimierung
KI identifiziert Leistungsprobleme:
// Leistungsproblem
const results = data
.filter(item => item.active)
.map(item => transform(item))
.filter(item => item !== null);
// KI-Optimierung
const results = data.reduce((acc, item) => {
if (item.active) {
const transformed = transform(item);
if (transformed !== null) {
acc.push(transformed);
}
}
return acc;
}, []);
Fortgeschrittene Debugging-Techniken
1. Speicherleckerkennung
KI hilft, Speicherlecks zu identifizieren:
// Speicherleckerkennung
class Component {
constructor() {
// KI-Warnung: Potenzielles Speicherleck
window.addEventListener('resize', this.onResize);
}
// KI-Vorschlag
cleanup() {
window.removeEventListener('resize', this.onResize);
}
}
2. Asynchrones Debugging
Debuggen Sie asynchrone Operationen mit KI:
// Asynchrones Debugging
async function fetchData() {
try {
const response = await api.get('/data');
return response.data;
} catch (error) {
// KI bietet kontextbewusste Fehlerbehandlung
if (error.response?.status === 404) {
return [];
}
throw new Error(`Datenabruf fehlgeschlagen: ${error.message}`);
}
}
Integration mit Tools
1. Versionskontrolle
KI hilft bei der Behebung von Git-bezogenen Problemen:
# Git-Konflikt
<<<<<<< HEAD
const config = { port: 3000 };
=======
const config = { port: 8080 };
>>>>>>> feature-branch
# KI-Analyse
"""
Konflikttyp: Konfigurationswert
Empfehlung: Umgebungsvariable verwenden
Lösung: const config = { port: process.env.PORT || 3000 };
"""
2. Tests
KI unterstützt beim Debugging von Tests:
describe('Benutzerauthentifizierung', () => {
it('sollte Benutzeranmeldedaten validieren', async () => {
// KI schlägt Testverbesserungen vor
const result = await auth.validate(credentials);
expect(result).toBe(true);
// KI: Grenzfalltests hinzufügen
// KI: Zeitüberschreitungsbehandlung hinzufügen
});
});
Fehlerbehebung bei KI-Debugging
Häufige Probleme
-
KI reagiert nicht
# KI-Debug-Sitzung zurücksetzen
> ai.debug.reset() -
Falsche Vorschläge
# Mehr Kontext bereitstellen
> ai.debug.context.add(fileContent) -
Leistungsprobleme
# KI-Analyse optimieren
> ai.debug.optimize()
Tipps für den Erfolg
-
Klaren Kontext bereitstellen
- Relevanten Code einbeziehen
- Erwartetes Verhalten beschreiben
- Fehlermeldungen teilen
-
Iteratives Debugging
- Mit einfachen Fällen beginnen
- Komplexität schrittweise erhöhen
- KI-Vorschläge validieren
-
Dokumentation pflegen
- Behobene Probleme dokumentieren
- KI-Vorschläge verfolgen
- Lösungen teilen
Verwenden Sie ai.debug.explain()
, um detaillierte Erklärungen zu KI-Vorschlägen zu erhalten!