실시간 녹음 + 타임스탬프 메모 + STT 전사 + LLM 구조화 회의록 + PDF/MD 내보내기. CaptionService 연동, 동시 사용 충돌 방지, 긴 회의 2-pass 요약 지원. DB 2테이블, IPC 15채널, UI 3뷰(목록/녹음/상세), 12개 locale i18n.
46 lines
1.8 KiB
Markdown
46 lines
1.8 KiB
Markdown
---
|
|
name: debug-electron
|
|
description: Electron 앱 디버깅. IPC 문제, 메모리 누수, 렌더러 크래시 등 진단.
|
|
allowed-tools: Read Grep Glob Bash Edit
|
|
---
|
|
|
|
# Electron Debug
|
|
|
|
증상 또는 에러 메시지를 받으면 아래 진단 흐름을 자동 실행합니다.
|
|
|
|
## 0. 자동 진단 파이프라인
|
|
|
|
증상 분류 → 해당 섹션 실행 → 원인 보고 → 수정 제안
|
|
|
|
1. **로그 수집**: `npm run dev` 출력 또는 electron-log 파일 확인
|
|
2. **에러 분류**: IPC / 오디오 / 메모리 / 렌더러 크래시 / 빌드
|
|
3. **해당 섹션 진단 실행**
|
|
4. **원인 + 수정 방안 보고**
|
|
|
|
## IPC 문제 진단
|
|
|
|
자동 실행할 검증 체인:
|
|
1. `shared/ipc-channels.ts`에서 문제 채널 Grep → 채널 정의 존재?
|
|
2. `src/main/ipc/`에서 해당 채널 핸들러 Grep → `ipcMain.handle`/`on` 등록?
|
|
3. `src/preload/index.ts`에서 `contextBridge.exposeInMainWorld` Grep → 브릿지 노출?
|
|
4. `src/renderer/`에서 `window.electronAPI.*` 호출 Grep → 렌더러 사용?
|
|
5. 1~4 중 끊어진 체인 지점이 원인
|
|
|
|
## 오디오 문제 진단
|
|
|
|
1. SoX 경로 확인: `src/main/utils/paths.ts` → `getSoxPath` 읽기
|
|
2. AudioCaptureService 설정 확인: sampleRate 16000, noiseSuppression false
|
|
3. faster-whisper sidecar 프로세스 상태: `tasklist | grep python`
|
|
4. 마이크 권한: Electron `systemPreferences.getMediaAccessStatus('microphone')`
|
|
|
|
## 메모리 누수 진단
|
|
|
|
1. `useEffect` cleanup 누락 Grep: `useEffect` 있는데 return 없는 패턴
|
|
2. IPC 리스너 제거 누락: `ipcRenderer.on` 대비 `removeListener`/`removeAllListeners` 검색
|
|
3. BrowserWindow destroy 확인: `close` 이벤트에서 `destroy()` 호출 여부
|
|
|
|
## 빌드/타입 문제
|
|
|
|
1. `npm run typecheck 2>&1 | head -30` 실행
|
|
2. 에러 파일/라인 추출 후 해당 코드 Read
|
|
3. 원인 분석 후 수정 제안
|