진단과 문제 해결
사람용·JSON 진단, check 모드, 디버그 출력과 재현 가능한 버그 보고 절차를 설명합니다.
Wave Foundation
재현 환경 기록
문제를 재현할 때는 사용한 컴파일러와 명령을 함께 기록합니다.
wavec --version
프런트엔드만 검사
링크나 실행 단계와 분리해 Wave 소스 자체를 검사하려면 다음을 사용합니다.
wavec build main.wave --emit=check
이 모드는 일반 실행 파일을 만들지 않고 Wave 입력을 검사합니다.
JSON 진단
IDE, CI, 빌드 도구처럼 진단을 프로그램에서 처리해야 한다면:
wavec --error-format=json build main.wave --emit=check
사람이 읽는 기본 출력과 자동화용 JSON 출력을 구분하면 진단 파싱이 안정적입니다.
상세 진단 출력
wavec --debug-wave=tokens build main.wave --emit=check
wavec --debug-wave=ast build main.wave --emit=check
--debug-wave는 토큰 스트림, 구문 트리와 중간 표현 같은 상세 정보를 출력합니다. 일반적인 오류는 첫 번째 진단과 표시된 소스 위치부터 확인하고, 상세 출력은 문제가 재현되는 단계를 좁힐 때 사용합니다.
흔한 문제 분리
- 파싱/타입 문제:
--emit=check에서도 실패합니다. - import 문제:
std-path,--dep-root,--dep설정과 실제 파일 경로를 확인합니다. - 링크 문제:
--link,-L, 대상 ABI, 심볼 이름을 확인합니다. - 실행 문제: 빌드는 성공하지만 실행 시 종료 코드나 런타임 환경에서 실패합니다.
- FFI 문제: 타입 너비, 문자열 표현, 포인터 수명, 호출 규약을 C 선언과 다시 대조합니다.
좋은 버그 보고서
wavec --version출력- 운영체제와 대상 triple
- 실행한 전체 명령
- 문제를 재현하는 최소
.wave소스 - 전체 진단 출력
- 기대 결과와 실제 결과
개인 경로, 토큰, 비밀 키 등 불필요한 민감 정보는 제거하십시오.