본문으로 건너뛰기

AI 언어 지원으로 디버깅하기

Cursor의 AI 기반 디버깅 기능은 지능적인 분석과 제안을 제공하여 문제를 더 빠르게 식별하고 수정하는 데 도움을 줍니다.

시작하기

AI 디버그 지원 활성화

  1. 명령 팔레트 열기(Ctrl/Cmd + Shift + P)
  2. "Enable AI Debug" 입력
  3. 기능을 활성화하려면 선택

기본 기능

1. 오류 분석

오류가 발생하면 AI가 분석을 도와줍니다:

example-error.js
// 코드의 오류
const user = getUserData();
console.log(user.name.toLowerCase());

// AI 분석
// ⚠️ 잠재적 null 참조
// - user가 null/undefined일 수 있음
// - user.name이 null/undefined일 수 있음
// 제안: null 검사 추가

2. 빠른 수정

AI는 일반적인 문제에 대한 수정 사항을 제안합니다:

component.tsx
// 이전: 타입 오류
const handleClick = (event) => {
console.log(event.value);
};

// AI 제안
const handleClick = (event: React.MouseEvent) => {
console.log(event.currentTarget.value);
};

고급 기능

1. 런타임 분석

AI는 런타임 동작을 분석할 수 있습니다:

performance.py
# 성능 문제
def process_data(items):
result = []
for item in items:
result.append(transform(item))
return result

# AI 제안
def process_data(items):
return [transform(item) for item in items]
# 🚀 성능 향상:
# - 리스트 컴프리헨션이 더 빠름
# - 메모리 할당 감소

2. 컨텍스트 인식 디버깅

AI는 코드베이스 컨텍스트를 이해합니다:

auth.service.ts
// 버그가 있는 원본 코드
async function validateUser(token) {
const user = await getUser(token);
return user.isValid;
}

// AI 디버그 분석
/**
* 발견된 문제:
* 1. 유효하지 않은 토큰에 대한 오류 처리 없음
* 2. user 객체에 대한 타입 검사 없음
* 3. user에 대한 null 검사 누락
*/

// AI 제안 수정
async function validateUser(token: string): Promise<boolean> {
try {
const user = await getUser(token);
return user?.isValid ?? false;
} catch (error) {
console.error('사용자 검증 실패:', error);
return false;
}
}

디버깅 워크플로우

1. 대화형 디버깅

디버깅 세션 중 AI 사용:

// AI 기반 중단점 배치
debugger; // AI가 변수 상태를 분석합니다

// AI 디버그 콘솔
> ai.analyze(variableName)
> ai.suggest.fix()
> ai.explain.state()

2. 로그 분석

AI는 복잡한 로그 분석을 도울 수 있습니다:

# 복잡한 로그 출력
[2024-03-20T10:15:30] 오류: 연결 거부됨...
[2024-03-20T10:15:31] 재시도 1...
[2024-03-20T10:15:32] 오류: 시간 초과...

# AI 분석
"""
감지된 문제: 네트워크 연결 문제
- 초기 연결 거부
- 재시도 시 시간 초과
제안: 네트워크 설정 및 방화벽 규칙 확인
"""

언어별 기능

JavaScript/TypeScript

// 타입 추론
function processData(data) {
// AI는 사용법에 따라 타입을 제안합니다
return data.map(item => item.value);
}

Python

# 타입 힌트 및 런타임 검사
def calculate_average(numbers: List[float]) -> float:
# AI는 입력 유효성 검사를 제안합니다
if not numbers:
raise ValueError("빈 리스트가 제공됨")
return sum(numbers) / len(numbers)

모범 사례

1. 오류 방지

AI를 사용하여 잠재적 오류를 포착:

// AI가 제안한 오류 방지
function divideNumbers(a: number, b: number): number {
// AI가 안전 검사를 추가합니다
if (typeof a !== 'number' || typeof b !== 'number') {
throw new TypeError('인수는 숫자여야 합니다');
}
if (b === 0) {
throw new Error('0으로 나누기');
}
return a / b;
}

2. 코드 품질

AI는 코드 품질 유지를 돕습니다:

// 이전
function fn(x) {
var res = x + 1;
return res;
}

// 이후(AI 개선)
const increment = (value: number): number => {
return value + 1;
};

3. 성능 최적화

AI는 성능 문제를 식별합니다:

// 성능 문제
const results = data
.filter(item => item.active)
.map(item => transform(item))
.filter(item => item !== null);

// AI 최적화
const results = data.reduce((acc, item) => {
if (item.active) {
const transformed = transform(item);
if (transformed !== null) {
acc.push(transformed);
}
}
return acc;
}, []);

고급 디버깅 기술

1. 메모리 누수 감지

AI는 메모리 누수를 식별하는 데 도움을 줍니다:

// 메모리 누수 감지
class Component {
constructor() {
// AI 경고: 잠재적 메모리 누수
window.addEventListener('resize', this.onResize);
}

// AI 제안
cleanup() {
window.removeEventListener('resize', this.onResize);
}
}

2. 비동기 디버그

AI로 비동기 작업 디버깅:

// 비동기 디버깅
async function fetchData() {
try {
const response = await api.get('/data');
return response.data;
} catch (error) {
// AI는 컨텍스트 인식 오류 처리를 제공합니다
if (error.response?.status === 404) {
return [];
}
throw new Error(`데이터 가져오기 실패: ${error.message}`);
}
}

도구와의 통합

1. 버전 관리

AI는 git 관련 문제 디버깅을 돕습니다:

# Git 충돌
<<<<<<< HEAD
const config = { port: 3000 };
=======
const config = { port: 8080 };
>>>>>>> feature-branch

# AI 분석
"""
충돌 유형: 구성 값
권장 사항: 환경 변수 사용
해결책: const config = { port: process.env.PORT || 3000 };
"""

2. 테스팅

AI는 테스트 디버깅을 지원합니다:

user.test.ts
describe('사용자 인증', () => {
it('사용자 자격 증명을 검증해야 함', async () => {
// AI는 테스트 개선을 제안합니다
const result = await auth.validate(credentials);
expect(result).toBe(true);
// AI: 엣지 케이스 테스트 추가
// AI: 타임아웃 처리 추가
});
});

AI 디버그 문제 해결

일반적인 문제

  1. AI가 응답하지 않음

    # AI 디버그 세션 재설정
    > ai.debug.reset()
  2. 잘못된 제안

    # 더 많은 컨텍스트 제공
    > ai.debug.context.add(fileContent)
  3. 성능 문제

    # AI 분석 최적화
    > ai.debug.optimize()

성공을 위한 팁

  1. 명확한 컨텍스트 제공

    • 관련 코드 포함
    • 예상 동작 설명
    • 오류 메시지 공유
  2. 반복적 디버깅

    • 간단한 사례로 시작
    • 점진적으로 복잡성 추가
    • AI 제안 검증
  3. 문서 유지

    • 해결된 문제 문서화
    • AI 제안 추적
    • 솔루션 공유

AI 제안에 대한 자세한 설명을 얻으려면 ai.debug.explain()을 사용하세요!

관련 리소스