같은 실행 파일도 실행 조건은 다를 수 있다

터미널에서 잘 되던 프로그램이 디버거에서는 설정 파일을 못 찾거나 곧바로 종료되면 디버거 자체를 의심하기 쉽습니다. 그러나 실행 파일이 같아도 전달한 인수, 현재 작업 폴더, 환경 변수가 다르면 결과는 달라질 수 있습니다. 먼저 터미널에서 성공한 전체 명령과 명령을 실행한 폴더를 기록합니다. 실행 파일의 위치와 현재 작업 폴더는 같은 개념이 아닙니다. 프로그램이 상대 경로로 파일을 읽으면 실행 파일이 들어 있는 폴더가 아니라 현재 작업 폴더를 기준으로 해석하는 경우가 많습니다. 경로를 찾지 못했다면 이 차이를 먼저 확인하세요.

인수 배열은 쉘 명령 문자열과 구분하기

DBG Desk의 인수 입력란은 문자열을 담은 JSON 배열입니다. 예를 들어 ["input file.txt", "--verbose"]는 공백을 포함한 첫 인수 하나와 옵션 하나를 전달하려는 표현입니다. 터미널의 명령 전체를 따옴표로 감싸 한 칸에 넣는 방식과 다릅니다. 실행 파일 경로는 별도 입력란에 넣고 실제 프로그램이 받는 인수만 배열로 작성하세요. JSON 안의 Windows 역슬래시는 이스케이프해야 하므로 ["C:\\data\\input.txt"]처럼 표현할 수 있습니다. 입력이 거절되면 프로그램 오류를 조사하기 전에 배열 문법과 원소가 모두 문자열인지부터 확인합니다.

작업 폴더와 환경 변수 맞추기

현재 버전은 대상의 작업 폴더나 환경 변수를 편집하는 별도 UI가 없습니다. 대상이 상대 경로에 의존한다면 필요한 폴더에서 로컬 서버를 시작하거나 지원되는 입력을 절대 경로로 바꿔 재현할 수 있습니다. 이 과정에서 프로그램을 수정한 것인지 실행 조건만 바꾼 것인지 기록하세요. 외부 명령이나 DLL을 찾는 과정은 PATH 같은 환경 변수에도 영향을 받을 수 있습니다. 부모 터미널에서 설정한 값과 다른 방식으로 실행한 서버의 값이 다를 수 있으므로, 성공한 환경에서 서버를 시작했는지도 비교해야 합니다. 환경을 맞춘 뒤에도 실패할 때 코드 내부의 처리를 조사합니다.

시작 직후의 실패는 입력 처리부터 보기

프로그램이 시작하자마자 끝나면 인수 검사나 설정 읽기 단계에서 정상적으로 오류를 반환했을 수 있습니다. 충돌인지 의도적인 종료인지 구분하고 로그와 종료 코드를 확인합니다. main에 정지한 뒤 인수 처리와 첫 파일 열기 호출을 따라가면 실행 조건의 차이를 찾기 쉽습니다. 대화형 표준입력을 기다리는 프로그램은 DBG Desk의 현재 화면에서 입력을 제공할 수 없으므로 실행 방식의 제한도 고려해야 합니다. 문제를 보고할 때는 실행 파일만 보내지 말고 인수 배열, 시작 폴더, 필요한 파일 구조와 민감한 값을 제거한 환경 조건을 함께 남기세요.

상대 경로를 확인하는 짧은 실험

터미널에서 같은 실행 파일을 두 폴더에서 각각 시작해 보세요. 한 폴더에서만 input.txt를 찾는다면 파일 내용보다 상대 경로의 기준이 달라진 영향일 수 있습니다. 그다음 입력 인수에 해당 파일의 절대 경로를 넘겨 두 실행을 비교하면 가설을 확인할 수 있습니다. 프로그램이 설정 파일을 내부에서 고정된 이름으로 읽는다면 인수만 바꿔도 해결되지 않으므로 그 경로를 만드는 코드를 봐야 합니다. 디버거에서만 실패한다는 보고에는 성공했던 시작 폴더와 파일 배치가 함께 있어야 합니다. 경로를 맞춘 뒤 인코딩이나 파일 권한 같은 다음 조건을 하나씩 확인합니다.