본문으로 건너뛰기

문제 해결 · FAQ

이 장에서 다루는 것

이 장은 PAIO를 사용하면서 자주 마주치는 증상을 증상별로 모아, 원인과 실제로 표시되는 메시지, 해결 절차를 정리한 것입니다. 화면에 보이는 것과 실제 동작이 다른 항목은 인용문으로 따로 표시합니다. 대상 독자는 PAIO 사용자 전체이며, 선행 조건은 없습니다. 각 기능의 정상적인 사용법은 해당 기능 문서에서 다루고, 이 장은 "예상과 다르게 동작할 때" 참고하는 것을 목적으로 합니다. 본문에 나오는 용어의 뜻은 21. 용어 사전에서 확인할 수 있습니다.

이 장에 인용된 메시지 문자열은 앱이 실제로 출력하는 영문 원문 그대로입니다. 화면에서 본 문구를 이 장에서 그대로 검색하면 해당 항목을 찾을 수 있습니다. 권한 관련 증상은 라이선스 잠금, 임포트 증상은 충돌 해결 항목을 함께 참고하는 것이 좋습니다.


20.0 증상으로 찾기

무언가 잘 되지 않을 때, 아래 표에서 증상을 먼저 찾은 뒤 해당 절이나 문서로 이동합니다. 이 표에 없는 증상은 20.1부터 서브시스템별로 정리되어 있고, 화면에 뜬 영문 메시지를 그대로 찾고 싶다면 20.13을 봅니다.

증상짧은 답자세히
컴포지션 안 빈 캔버스를 우클릭해도 메뉴가 없습니다정상입니다. 빈 곳이 아니라 컴포지션 프레임을 우클릭합니다08. VFB 에디터 8.4
검증 실행 버튼을 못 찾겠습니다버튼이 없습니다. 편집할 때마다 자동으로 실행됩니다14. Validation 14.1
저장을 눌렀는데 탭의 점(●)이 남아 있습니다다른 프로젝트 탭이거나, 라이선스 만료이거나, 쓰기 실패입니다20.3
design·workflow·export 폴더를 우클릭해도 메뉴가 없습니다정상입니다. 메뉴가 있는 고정 폴더는 doccode 뿐입니다04. 워크스페이스와 프로젝트 4.6.5
export 폴더의 ARXML을 고쳤는데 반영되지 않습니다export 는 결과물 폴더입니다. 에디터에서 고치고 다시 내보냅니다20.5
트리의 IVC 와 탭의 In-Vehicle Network 가 달라 보입니다같은 것입니다. 트리 이름과 탭 제목이 다를 뿐입니다04. 워크스페이스와 프로젝트 4.5
시그널이 빨갛게 Overlap 으로 표시됩니다두 시그널이 같은 비트를 씁니다. START 를 조정합니다07. Signal 에디터 7.10
커넥터를 이으려 했는데 아무 반응이 없습니다프로토콜이나 소속 ECU가 맞지 않습니다. 메시지는 나오지 않습니다06. IVC 에디터 6.5.5
FlexRay 프레임을 만들 수 없습니다현재 버전에는 FlexRay·Ethernet 탭이 없습니다02. 기본 사양 2.5
이름을 입력했는데 자꾸 원래대로 돌아갑니다AUTOSAR 이름 규칙 위반입니다20.3
탭이 더 이상 열리지 않습니다동시에 열 수 있는 탭은 20개입니다20.3
화면을 좌우로 나누고 싶은데 메뉴가 없습니다메뉴가 없습니다. 탭을 본문 오른쪽 절반으로 끌어다 놓습니다05. 화면 구성과 조작 5.3.4
AI가 만든 모델을 그대로 써도 되는지 모르겠습니다초안입니다. 각 에디터와 검증 패널로 반드시 확인합니다15. AI 어시스턴트 15.4
여러 프로젝트를 열었더니 되돌리기가 이상합니다Undo는 활성 탭이 속한 프로젝트에만 적용됩니다20.3

20.1 실행 · 로그인 · 라이선스

앱을 켰는데 작업 화면이 나오지 않고 로그인 화면만 보입니다

정상 동작입니다. PAIO는 인증이 확인된 뒤에야 메인 레이아웃을 만듭니다. 로그인 화면에서는 다음 두 가지 방법 중 하나를 사용할 수 있습니다.

  1. Continue with Google 을 누릅니다. 기본 브라우저에서 Google 로그인이 열립니다.
  2. Email address 에 이메일을 입력하고 Continue 를 누릅니다. 6자리 OTP 입력 화면이 열립니다.

결과 확인: 로그인이 끝나면 로그인 오버레이가 사라지고 헤더 · 탐색기 · 에디터 영역이 있는 메인 레이아웃이 나타납니다.

로그인은 됐는데 편집이 되지 않고 업그레이드 다이얼로그만 나타납니다

라이선스가 만료(expired) 또는 읽기 전용(readonly) 상태입니다. 이 두 상태에서는 읽기 · 임포트만 가능하고 편집 · 생성 · 삭제 · 익스포트는 모두 거부됩니다. 라이선스 상태별로 허용되는 작업은 다음과 같습니다.

라이선스 상태읽기임포트편집·생성·삭제익스포트
active (Pro / Enterprise)OOOO
trial (체험 기간 내)OOOO
expiredOOXX
readonly (무결성 검사 실패)OOXX

상태바 오른쪽의 라이선스 표시가 현재 상태를 그대로 보여 줍니다. 표시 문구와 의미는 다음과 같습니다.

표시의미
License Expired (경고 아이콘)만료 또는 읽기 전용
Trial — 12d체험판, 남은 일수
Pro - 5 days (경고 아이콘)만료 7일 이내
Pro / Enterprise (왕관 아이콘)정상

이 표시는 클릭할 수 있고, 툴팁은 Click to manage license 입니다. 자세한 내용은 03. 설치 · 로그인 · 라이선스에서 확인할 수 있습니다.

거부될 때 나타나는 다이얼로그의 제목은 Upgrade Required 이고, 하단의 Later 버튼으로 닫을 수 있습니다.

다이얼로그가 반복해서 나타나는 경우: 만료 상태에서 편집을 시도할 때마다 업그레이드 다이얼로그가 나타납니다. 다이얼로그는 한 번에 하나만 열리므로 창이 쌓이지는 않으며, 닫으면 다음 거부에서 다시 열립니다.

오프라인으로 오래 두었더니 익스포트가 거부됩니다

라이선스 캐시의 유효 기간은 4시간입니다. 이 시간이 지나도록 서버에 연결하지 못하면 익스포트가 OFFLINE_EXPORT_DENIED: A server connection is required 로 거부됩니다. 이미 온라인으로 인증을 마친 세션이라면 편집과 저장은 계속할 수 있습니다. 다만 오프라인 상태로 앱을 새로 시작했고 캐시도 만료된 경우에는 편집과 저장까지 막히므로, 네트워크를 복구해 다시 인증해야 합니다. 네트워크를 복구한 뒤 창을 다시 활성화(포커스)하면 재검증이 실행되어 익스포트가 다시 열립니다.

작업 중에 만료로 바뀌는 순간에는 앞의 다이얼로그와 다른 형태가 나타납니다. 제목은 같은 Upgrade Required 지만 닫기(×)와 Later 가 숨겨져 있어 닫을 수 없고, 화면 위쪽 타이틀바만 남겨 두고 나머지를 덮습니다. 네트워크가 복구되어 라이선스가 다시 유효해지면 이 다이얼로그는 저절로 닫히므로, 앱을 다시 시작할 필요는 없습니다.

갑자기 로그아웃되었습니다

다른 기기에서 같은 계정으로 로그인해 세션이 무효화된 경우입니다. 이때 표시되는 다이얼로그는 제목이 Signed in on Another Device 이고, 본문은 You've been signed out because your account was used on another device. 입니다.

  • 저장하지 않은 탭이 없으면 OK 버튼 하나만 있는 알림이 나타나고, 누르면 로그아웃됩니다.
  • 저장하지 않은 탭이 있으면 그 탭 이름이 함께 표시되고 Save & Sign Out / Sign Out 중에서 선택하게 됩니다. 저장에 실패하면 Save Failed 다이얼로그로 재시도 여부를 묻습니다.

아이콘을 눌러도 앱이 실행되지 않습니다 (Windows)

설치 파일 일부가 손상되었거나 백신이 격리한 경우입니다. PAIO는 실행 파일 안의 프로그램 묶음이 설치 당시와 다르면 시작 자체를 중단하는데, 이때는 오류 창도 로그도 남지 않고 즉시 종료됩니다. 아래의 무결성 검사 잠금과는 다른 증상입니다(그쪽은 창이 뜨고 안내가 표시됩니다).

PAIO를 제거한 뒤 정식 배포본을 다시 설치합니다. 제거해도 사용자 데이터는 지워지지 않으므로 작업 내용은 그대로 유지됩니다.

무결성 검사에 걸려 기능이 잠깁니다 (Windows)

PAIO는 실행 직후 백그라운드에서 PAIO.exe 를 자신의 Authenticode 서명과 대조합니다. 이 검사는 Windows 설치본에서만 수행됩니다. 검사 결과에 따른 동작은 다음과 같습니다.

검사 결과동작
서명 유효 + 서명자 일치정상. 아무것도 잠그지 않습니다
서명 없음아무것도 잠그지 않습니다
판정 불가아무것도 잠그지 않습니다. 인증서 만료 · 폐기 서버 접속 불가 등
해시 불일치 (hash-mismatch)잠금
서명자 불일치 (wrong-signer)잠금

잠금이 걸리면 다음 다이얼로그가 한 번 표시됩니다.

PAIO could not verify the integrity of its installation.
Please reinstall PAIO. Editing is disabled for this session.

이 다이얼로그는 앱을 종료시키지 않습니다. 프로젝트를 열어 읽는 것은 계속 가능하고 편집만 막힙니다. 진단 정보는 사용자 데이터 폴더의 tamper-report.log 파일에 기록됩니다. Windows에서는 %APPDATA%\PAIO\tamper-report.log 입니다(워크스페이스별 workspace-<해시> 하위 폴더가 아니라 그 상위 폴더에 있습니다). 이 파일에는 실행 파일 경로와 서명 상태만 들어가므로, 지원팀에 그대로 전달하면 됩니다. 정식 배포본을 다시 설치하는 것이 해결책입니다.


20.2 워크스페이스 · 프로젝트

프로젝트를 만들려는데 이름이 거부됩니다

탐색기 컨텍스트 메뉴와 Project ▸ New Project 로 여는 이름 입력 다이얼로그(New Project)의 검사 규칙과 실제 메시지는 다음과 같습니다.

조건표시되는 메시지
비어 있음Project name cannot be empty
영문자·숫자·하이픈·밑줄 외 문자 포함Project name can only contain letters, numbers, hyphens, and underscores
Windows 예약 디바이스 이름"<이름>" is a reserved system name and cannot be used
이미 있는 이름(대소문자 무시)Project "<이름>" already exists

예약 디바이스 이름은 CON, PRN, AUX, NUL, COM0 ~ COM9, LPT0 ~ LPT9 이며 대소문자를 구분하지 않습니다. 예를 들어 DoorEcuDoor_Ecu-01 은 통과하고, Door Ecu(공백)와 con 은 거부됩니다. 같은 규칙이 Quick Start 의 프로젝트 이름 입력에도 그대로 적용됩니다.

환영 화면의 New Project 버튼은 검사 규칙이 다릅니다. 워크스페이스를 연 직후 편집기 영역에 보이는 New Project 버튼은 위 네 가지 중 문자 규칙 하나만 검사합니다. 그래서 이미 있는 이름을 입력하면 다이얼로그는 그대로 통과하고, 프로젝트 생성 단계에서 중복으로 실패합니다. 이때 화면에는 아무 메시지도 나오지 않고 프로젝트만 만들어지지 않습니다. 프로젝트가 생기지 않으면 같은 이름이 이미 있는지 확인하는 것이 좋습니다.

프로젝트 이름을 바꾸려는데 규칙이 만들 때와 다릅니다

프로젝트 노드를 우클릭한 뒤 Rename Project 로 여는 다이얼로그는 생성 다이얼로그와 검사 규칙이 다릅니다. 허용 문자를 열거하는 대신 파일 이름에 쓸 수 없는 문자만 막습니다. 조건별 메시지는 다음과 같습니다.

조건표시되는 메시지
비어 있음Project name cannot be empty
< > : " / \ | ? * 중 하나 포함Project name contains invalid characters
Windows 예약 디바이스 이름"<이름>" is a reserved system name and cannot be used
다른 프로젝트가 이미 쓰는 이름(대소문자 무시)Project "<이름>" already exists

즉 공백이 든 이름은 만들 때는 거부되지만 이름 변경으로는 통과합니다.

탐색기에 파일이 보이지 않습니다

폴더마다 표시 확장자 필터가 있습니다. 필터에 걸린 파일은 지워진 것이 아니라 트리에 그려지지 않을 뿐입니다. 폴더별로 보이는 확장자는 다음과 같습니다.

폴더보이는 확장자
doc.md .markdown .html .htm .png .jpg .jpeg .gif .svg .webp .bmp .txt
code.c .cpp .h .hpp .cc .cxx .hh .hxx .rs .cmake
workflow.yaml .yml .json
export.arxml .xml .dbc

code 폴더는 확장자 필터에 더해 빌드 설정 파일을 파일명으로 직접 노출합니다: CMakeLists.txt, Makefile, Cargo.toml, Cargo.lock, 그리고 cmakelists 로 시작하는 모든 .txt (CMakeLists_copy.txt 등, 대소문자 무시)가 여기에 해당합니다. 그 외의 일반 .txtcode 폴더에서 숨겨집니다.

트리를 다시 읽으려면 탐색기 상단의 새로고침 버튼(툴팁 Refresh Explorer)을 누릅니다.

탐색기에 import 폴더가 보이지 않습니다

의도된 동작입니다. 프로젝트를 만들면 디스크에는 doc, design, code, workflow, export, import 여섯 개 폴더가 만들어지지만, 탐색기 트리는 그중 다섯 개(doc, design, code, workflow, export)만 그립니다. import 폴더는 디스크에만 존재합니다.

design 폴더를 펼쳐도 파일이 아니라 트리가 나옵니다

의도된 동작입니다. design 은 파일 목록 대신 고정된 모델 트리로 그려집니다. 트리 구성은 다음 두 갈래이며, 그 아래로는 더 늘어나지 않습니다.

  • System — 하위에 IVC, VFB, Interface, DataType, Signal
  • Module — 하위에 Definition, Configuration

VFB 노드의 실제 경로는 design/SWC 이지만 트리에는 VFB 로 표시됩니다. 실제 모델 파일을 직접 확인하려면 OS 파일 탐색기를 사용합니다. 프로젝트를 우클릭한 뒤 Open in File Explorer 를 선택하면 해당 폴더가 열립니다.

고정 폴더 이름을 바꿀 수 없습니다

doc, design, code, workflow, export 는 탐색기 컨텍스트 메뉴에 이름 변경 · 삭제 항목 자체가 없습니다. doccode 폴더에만 New File / New Folder 가 나오고, 나머지 고정 폴더는 우클릭해도 메뉴가 나타나지 않습니다.

고정 폴더를 OS 탐색기에서 지웠는데 다시 생깁니다

의도된 동작입니다. 워크스페이스 파일 감시자가 고정 폴더의 삭제(unlinkDir)를 감지하면 그 폴더를 자동으로 다시 만듭니다. 다만 프로젝트 자체를 삭제하는 중일 때는 복구하지 않습니다.


20.3 편집 · 저장

탭에 점(●)이 계속 남아 있습니다

저장되지 않은 변경이 있다는 뜻입니다. 저장 방법은 세 가지입니다.

  1. Ctrl+S — 활성 에디터를 저장합니다. 포커스가 에디터 밖(예: 본문 영역)에 있어도 메뉴 Save 와 같은 경로로 저장합니다.
  2. Project ▸ Save (Ctrl+S) — 위와 같은 경로입니다.
  3. Project ▸ Save All — 현재 활성 탭이 속한 프로젝트만 저장합니다.

결과 확인: 저장이 성공하면 탭의 점이 사라집니다.

점이 계속 남아 있다면 원인은 다음 셋 중 하나입니다.

  1. 그 탭이 다른 프로젝트에 속해 있는 경우입니다. Save All 은 활성 탭의 프로젝트만 저장하므로, 다른 프로젝트의 탭을 한 번 클릭해 활성으로 만든 뒤 다시 저장합니다.
  2. 라이선스가 만료 상태인 경우입니다. 이때는 저장을 시도하는 순간 업그레이드 다이얼로그가 대신 나타납니다(20.1 참고).
  3. 그 밖의 이유로 파일 쓰기가 실패한 경우입니다(권한 부족, 원격 연결 끊김, 디스크 오류 등). 이 경우 화면에 아무 메시지도 나오지 않고 점만 남으며, 실패 내용은 개발자 콘솔에만 기록됩니다.

표시와 동작이 다른 지점: Project ▸ Save As... (Ctrl+Shift+S)는 메뉴와 명령 팔레트에 모두 있지만, 전역에서는 아무 동작도 하지 않습니다. 다만 IVC 에디터와 DataType 에디터는 각자 Ctrl+Shift+S 를 따로 처리하므로, 그 캔버스에 포커스가 있으면 각각 Save IVC Diagram / Save DataTypes 저장 대화상자가 열립니다. 자세한 내용은 19. 단축키 총람에서 확인할 수 있습니다.

이름을 입력했는데 반영되지 않고 오류 표시만 나타납니다

AUTOSAR SHORT-NAME 규칙 위반입니다. 이름은 첫 글자가 영문자이고, 이후는 영문자 · 숫자 · 밑줄만 쓸 수 있습니다. 이름을 실제로 거부하는 자리에서는 128자 제한도 함께 걸립니다. 필드에 붙는 문구는 두 가지입니다.

조건표시되는 문구
비어 있거나 공백뿐Name is required
규칙에 맞지 않는 문자Must start with a letter, then letters/digits/underscores only

빈 이름은 붉은색으로 표시되고 모델에 반영되지 않습니다. 이름은 AUTOSAR에서 식별자이며, 빈 이름이 모델에 들어가면 다른 파일의 참조까지 빈 문자열로 덮어써서 되돌릴 수 없기 때문입니다.

반면 규칙에 어긋나는 문자가 든 이름은 주황색 경고일 뿐이며, 값을 실제로 막을지는 화면마다 다릅니다. Adaptive 탭과 Persistency 인터페이스는 경고 상태의 값을 거부해 이전 이름을 그대로 남기지만, Service · Sender-Receiver · Client-Server · Mode-Switch 탭은 경고만 낸 채 값을 그대로 모델에 넣습니다. 즉 경고가 뜬 이름이 저장된 채로 남아 있을 수 있으므로, 익스포트 전에 경고가 남은 필드가 없는지 확인합니다.

예를 들어 Adaptive 탭에서 이름을 1stPort 로 바꾸려 하면 거부되고 이전 이름이 그대로 남습니다. Port1 로 고치면 그 즉시 반영됩니다.

Undo를 눌렀는데 다른 프로젝트의 작업이 되돌아갈까 걱정됩니다

걱정하지 않아도 됩니다. 하나의 창에 여러 프로젝트의 에디터가 동시에 열려 있어도 Undo / Redo와 Save All 은 현재 활성 탭이 속한 프로젝트로 한정됩니다. 탭별 점(●)은 프로젝트와 무관하게 파일 단위로 정확히 표시됩니다.

예외가 하나 있습니다. 앱을 닫을 때의 저장(onBeforeClose)만은 모든 프로젝트의 저장하지 않은 변경을 대상으로 합니다. 종료 시 다른 프로젝트의 편집이 유실되지 않게 하기 위해서입니다.

외부에서 파일을 고쳤는데 에디터에 반영되지 않습니다

그 파일에 저장하지 않은 편집이 있거나 편집이 진행 중이면 자동 리로드를 건너뜁니다. 사용자의 편집을 지키기 위한 동작이며, 이때 경고 토스트가 나타납니다.

메시지는 다음 형태이고, 앞부분만 에디터마다 다릅니다.

<대상> changed on disk. Keeping your unsaved edits - save to overwrite the external change.

에디터별로 <대상> 자리에 들어가는 문구는 다음과 같습니다.

에디터<대상> 자리에 들어가는 문구
IVCIVC file
SignalSignal file
SystemSystem file
VFBVFB files
InterfaceInterface file
Interface 에디터의 SERVICE 모델Service file
DataTypeDataType file
Module DefinitionModule definition file
ECUC ConfigurationECUC config file

같은 파일에 대한 이 경고는 5초 안에는 다시 나타나지 않습니다(외부 도구가 파일을 연속으로 쓰면 경고가 무한히 반복되기 때문입니다). 판정 기준에는 다음이 모두 포함됩니다.

  • 그 에디터가 다루는 파일 중 하나라도 저장되지 않았을 때
  • 입력 중인 값이 아직 반영 전일 때(타자 입력 중, 그리드 셀 편집 중 등)
  • 그 에디터의 설정 다이얼로그가 열려 있고 그 안에 변경이 있을 때

해결하려면 먼저 저장해서 디스크를 덮어쓰거나, 변경을 버리는 쪽이라면 탭을 닫았다가 다시 엽니다.

창이 닫히거나 탭이 닫힐 때 저장 여부를 묻는 창

창이나 탭을 닫을 때 저장 여부를 묻는 창의 제목과 본문은 다음과 같습니다.

상황제목본문
탭 하나 닫기Unsaved ChangesDo you want to save the changes to <탭 이름>?
창 닫기Unsaved ChangesDo you want to save the changes to <탭 이름들>?

탭 컨텍스트 메뉴의 일괄 닫기는 저장 여부를 묻지 않습니다. 탭을 우클릭했을 때 나오는 Close 만 저장 여부를 묻습니다. Close OthersClose All 은 저장하지 않은 탭도 그대로 닫으며, 그 변경은 사라집니다. 안전하게 정리하려면 Close Saved 를 사용하는 것이 좋습니다. 이 항목은 저장된(깨끗한) 탭만 닫습니다.

Ctrl+B 를 눌렀더니 사이드바 대신 빌드가 실행됩니다

코드 에디터(Monaco)에 포커스가 있으면 Ctrl+B 는 그 에디터의 Build 명령입니다. 코드 에디터 밖을 클릭하고 다시 누르면 사이드바 토글로 동작합니다. 같은 이유로 코드 에디터에서는 Ctrl+F5Build & Run, Shift+Alt+FFormat Document, Alt+OSwitch Header/Source 입니다. 전체 단축키는 19. 단축키 총람에서 확인할 수 있습니다.

탭이 더 이상 열리지 않습니다

동시에 열 수 있는 탭은 20개입니다. 한도에 도달하면 새 탭이 조용히 열리지 않습니다.

표시와 동작이 다른 지점: 한도를 초과해도 사용자에게 아무 메시지도 표시되지 않습니다. 개발자 콘솔에만 Maximum number of tabs (20) reached 가 남습니다. 파일을 눌렀는데 아무 일도 일어나지 않으면 이 한도를 의심해 보는 것이 좋습니다.

정리 방법은 위의 탭 컨텍스트 메뉴 항목을 참고하세요.


20.4 임포트

임포트는 프로젝트 노드를 우클릭한 뒤 Import 를 선택해 시작합니다. 파일 선택 다이얼로그의 제목은 Select files to import 이고, 필터는 All Supported Files(.arxml + .dbc) / ARXML Files / DBC Files 세 가지이며, 여러 파일을 한 번에 선택할 수 있습니다. 자세한 절차는 13. 임포트 · 익스포트에서 확인할 수 있습니다.

임포트 전에 하던 편집이 사라질까 걱정됩니다

걱정하지 않아도 됩니다. 임포트는 파일 선택 직후, 실제 작업을 시작하기 전에 열려 있는 모든 프로젝트의 저장하지 않은 편집을 자동 저장합니다. 임포트가 모델 파일을 다시 쓰고 모든 에디터가 디스크에서 다시 읽기 때문에, 저장되지 않은 편집은 그 리로드에서 조용히 사라지기 때문입니다.

또한 임포트 전체가 하나의 실행 취소 단위로 기록되므로 Ctrl+Z 한 번으로 되돌릴 수 있습니다. Edit ▸ Undo 메뉴에는 Undo Import <파일이름> 처럼 대상이 함께 표시됩니다. 파일 이름은 선택한 파일 중 첫 번째 것이 쓰이지만, 되돌리기 범위는 그 임포트가 쓴 파일 전부입니다.

임포트를 다시 실행했더니 거부되었습니다

앞의 임포트가 아직 끝나지 않았거나 충돌 다이얼로그에서 멈춰 있으면 두 번째 임포트는 시작되지 않습니다. 먼저 진행 중인 임포트를 끝내거나 취소해야 합니다. 진행 다이얼로그에는 다음 셋 중 하나가 표시됩니다.

Import rejected: an import is already running. Finish or cancel it first.
Import rejected: an import is waiting on the source-conflict dialog. Finish or cancel it first.
Import rejected: an import is waiting on conflict resolution. Finish or cancel it first.

먼저 시작한 임포트가 이미 쓴 파일과 그 되돌리기 정보를 두 번째 임포트가 지워 버리지 않게 하려는 동작입니다. Machine Config 다이얼로그의 PARA Platform 버튼도 같은 임포트 경로를 쓰므로 같은 조건에서 거부되며, 이때는 문구가 Base configuration rejected: ... 로 시작합니다.

임포트가 멈추고 "Import Source Conflicts" 창이 나타났습니다

선택한 여러 파일이 같은 요소를 서로 다르게 정의하고 있는 경우입니다. 즉 프로젝트가 아니라 입력 파일들 사이의 충돌입니다.

창의 제목 옆에는 — N elements diverge across imported files 요약이 붙습니다. 해결 절차는 다음과 같습니다.

  1. 왼쪽 트리에서 충돌 요소를 선택합니다. 오른쪽에 파일별 값이 나타납니다.
  2. 요소마다 기준이 될 파일을 선택합니다. 하단의 Prefer source: 드롭다운에서 파일을 고른 뒤 Apply to remaining 을 누르면, 아직 정하지 않은 나머지 항목에 그 파일의 값이 일괄 적용됩니다.
  3. 오른쪽 아래 Resolve 3/7 형태의 버튼(결정한 수 / 전체 수)을 누르면 임포트가 이어집니다. 이 버튼은 항상 누를 수 있습니다. 결정하지 않은 항목에는 마지막 파일의 값이 쓰이고 DUPLICATE_ELEMENT_MISMATCH 경고로 남습니다.

중단하려면 Cancel Import 를 누릅니다. 확인 창(Cancel Import?)의 본문은 Nothing has been written yet — your project files stay untouched. 입니다. 즉 이 시점에는 아직 아무것도 기록되지 않았으므로 되돌릴 것도 없습니다. 확인 창에서 Keep Resolving 을 누르면 충돌 창으로 돌아갑니다.

임포트 후 충돌 창이 나타났습니다

프로젝트에 이미 있는 요소와 새로 들어오는 요소가 충돌하는 경우입니다. 창의 제목은 Conflict Resolution — N conflicts 이고, 요소마다 다음 버튼 중에서 선택합니다.

버튼동작
Keep Project Version기존 프로젝트 값을 유지합니다
Use Imported Version임포트한 값으로 덮어씁니다
Merge Fields필드별로 각각 어느 쪽을 쓸지 선택합니다(양쪽에 차이가 있을 때만 표시됩니다)
Keep Both이름을 바꿔 둘 다 남깁니다(해당 요소가 허용할 때만 표시됩니다)

Merge Fields 로 필드를 고른 뒤 Keep Project Version / Use Imported Version 으로 바꾸면 Discard field edits? 확인 창이 나타나고, 확인하면 필드별 선택이 버려집니다.

정리가 끝나면 오른쪽 아래 Resolve N/M 을 누릅니다.

결정하지 않고 Resolve를 누르면 임포트한 값으로 덮어씁니다. 결정하지 않은 항목을 처리하는 방식이 앞의 소스 충돌 창과 다르므로 헷갈리기 쉽습니다. 남은 항목이 있으면 Unresolved Conflicts 확인 창이 먼저 나타나고, 본문은 N undecided conflicts will be overwritten with the imported values. 입니다. 여기서 Overwrite & Continue 를 누르면 결정하지 않은 항목이 모두 임포트 값으로 바뀌고, Cancel 을 누르면 충돌 창으로 돌아갑니다.

취소하려면 Resolve 왼쪽에 있는 Cancel 을 누릅니다(이 창 안에는 Cancel Import 라는 버튼이 없습니다). 그러면 Cancel import? 확인 창이 나타나고, 본문은 Discards this import and restores your project to its pre-import state. 입니다. Cancel Import 를 누르면 실제로 임포트 전 상태로 되돌아가고, Keep Resolving 을 누르면 충돌 창으로 돌아갑니다. 정상적으로 되돌아가면 Import cancelled — the project was restored to its pre-import state. 토스트가, 되돌리기에 실패하면 Import cancelled, but rollback could not restore: ... 토스트가 표시됩니다.

전용 Import ECUC Configuration 에서 나타난 충돌 창은 취소 결과가 다릅니다. 확인 창의 본문이 Conflicting files keep your current values; already-imported files stay applied. 이며, 충돌하지 않아 이미 쓴 파일은 그대로 남습니다.

결정을 마치고 임포트가 이어지면 Import complete — conflicts resolved: 3 replaced, 1 kept 형태의 토스트가 표시됩니다. 반영 중에 실패하면 프로젝트는 통째로 되돌아가고 Import failed: ... 토스트가 나타납니다.

임포트는 끝났는데 일부 데이터가 보이지 않습니다

표시와 동작이 다른 지점: 일반 Import 는 완료 메시지에 요소 개수만 표시합니다 (Import complete: N elements imported from M file(s)). 임포트 과정에서 생긴 경고는 화면에 전혀 표시되지 않습니다. 해소되지 않은 참조(UNRESOLVED_* 계열), 건너뛴 ECUC 설정, 버려진 모듈 직속 파라미터 등이 모두 여기에 해당합니다.

경고 원문을 확인해야 할 때는 다음 방법을 사용합니다.

  • ECUC 설정만 다시 가져오려면 design ▸ Module ▸ Configuration 노드를 우클릭한 뒤 Import ECUC Configuration 을 사용합니다. 이 전용 경로는 건너뛴 모듈과 거부된 모듈을 다이얼로그로 보고합니다(아래 항목 참고).

ECUC 설정이 임포트되지 않았습니다

해당 모듈 정의 가 프로젝트에 없으면 그 모듈의 설정은 건너뜁니다. 다만 같은 ARXML 파일 안에 ECUC-MODULE-DEF 가 함께 들어 있으면 정의를 먼저 임포트한 뒤 설정을 맞추므로, 정의와 설정이 한 파일에 있으면 따로 준비할 필요가 없습니다.

전용 임포트(Import ECUC Configuration)를 사용하면 결과가 다이얼로그로 보고됩니다. 제목은 ECUC Configuration Import — Partial 이고, 본문은 다음 형태입니다.

Imported 3 module configuration(s).

Skipped — Module Definition not found:
• Dcm
• Dem

Rejected — definition mismatch:
• Com: Container definition not found in "Com": ComSignalX (instance "ComSignal_0")

두 분류의 의미는 다음과 같이 다릅니다.

분류의미대응
Skipped그 모듈의 정의 파일이 프로젝트에 없습니다정의 ARXML을 먼저 임포트합니다
Rejected정의는 있는데 컨테이너 · 파라미터 · 레퍼런스가 정의 트리와 구조적으로 맞지 않습니다정의 버전을 맞추거나 설정 파일을 확인합니다

참고로 일반 Import 로 같은 파일을 넣으면 이 두 분류가 화면에 표시되지 않고 경고로만 남습니다.

ECUC 모듈 정의를 임포트했더니 일부 항목이 빠졌습니다

ECUC-MODULE-DEF 바로 아래에 놓인 파라미터 · 레퍼런스는 의도적으로 버립니다. AUTOSAR R25-11 XSD의 ECUC-MODULE-DEF 그룹에는 파라미터 · 레퍼런스 슬롯이 없으므로, 이를 모델에 담아 두면 익스포트 결과가 스키마 위반이 되기 때문입니다. 지원하지 않는 ECUC-*-DEF 태그도 같은 이유로 무시됩니다.

모듈 정의는 일반 Import 를 실행하면 함께 임포트됩니다(ARXML 안의 ECUC-MODULE-DEF 를 찾아 모듈 정의로 씁니다). 따로 실행할 메뉴는 없습니다.

표시와 동작이 다른 지점: 모듈 정의만 따로 임포트하는 메뉴는 없으며, 위의 "버림" 경고는 어느 경로에서도 화면에 표시되지 않습니다. 정의 항목이 예상과 다르면 원본 ARXML에서 ECUC-MODULE-DEF 직속 파라미터 · 레퍼런스가 있는지 직접 확인하는 것이 좋습니다.

DBC의 한글·특수문자가 깨집니다

자동 감지는 UTF-8 BOM만 인식하고, BOM이 없으면 ISO-8859-1(Latin-1)로 읽습니다. 따라서 BOM 없는 UTF-8 파일이 원인입니다. 파일을 UTF-8 with BOM으로 다시 저장하면 해결됩니다.


20.5 익스포트

프로젝트 노드를 우클릭한 뒤 Export 를 선택해 실행합니다. 상세 절차는 13. 임포트 · 익스포트에서 확인할 수 있습니다.

Export를 눌렀는데 실패합니다

익스포트에는 활성 라이선스 + 온라인 검증이 필요합니다. 실패하면 진행 다이얼로그에 Export failed: 로 시작하는 오류가 표시되며, 뒤에 붙는 원인 문자열은 다음 셋 중 하나입니다.

표시되는 원인의미
OFFLINE_EXPORT_DENIED: A server connection is required서버에 연결하지 못했습니다
PLAN_EXPIRED: Export is not permitted on this plan라이선스가 만료 상태입니다
INTEGRITY_EXPORT_DENIED: Installation integrity check failed무결성 검사가 실패한 설치본입니다

라이선스가 만료 상태면 익스포트 메뉴 자체가 업그레이드 다이얼로그로 먼저 막히므로, 위 PLAN_EXPIRED 는 메뉴를 통과한 뒤 서버가 거부한 경우입니다.

이 세 가지 검사는 ARXML 전체 익스포트뿐 아니라 Extract ECU · Extract Machine · DataType 익스포트에도 똑같이 적용됩니다.

결과 파일이 어디에 생기는지 모르겠습니다

결과 파일은 항상 <프로젝트>/export/ 아래에 만들어집니다. 파일 저장 위치를 묻는 다이얼로그는 나타나지 않습니다. 파일은 <프로젝트이름>_*.arxml 형태로 여러 개가 만들어집니다(System / SWC / Interface / COM / DataType / IDS / EcucModuleDef / EcucConfVal 중 내용이 있는 것만). 완료 메시지는 Export complete: N elements exported to <프로젝트이름>_*.arxml 이며, 탐색기의 export 폴더가 자동으로 새로 고쳐집니다.

IVC 에디터에서 ECU 노드를 우클릭한 뒤 Extract ECU 를(HPC 노드라면 Extract Machine 을) 실행하면 결과가 <프로젝트>/export/<노드이름>/ 하위 폴더에 만들어집니다. 완료 메시지는 <노드이름> → export/<노드이름>/ 을 부제로 하는 파일 목록으로 표시됩니다.

export 폴더의 ARXML을 고쳤는데 설계에 반영되지 않습니다

의도된 동작입니다. export익스포트 결과만 쌓이는 단방향 폴더입니다. PAIO는 이 폴더를 다시 읽지 않으므로, 여기 있는 .arxml 파일을 직접 고쳐도 design/ 의 모델은 바뀌지 않습니다. 다음 익스포트에서 같은 이름의 파일이 만들어지면 고친 내용은 덮어써집니다.

설계를 바꾸려면 해당 에디터에서 모델을 고치고 저장한 뒤, 프로젝트 노드를 우클릭해 Export 를 다시 실행합니다.

외부에서 받은 ARXML을 프로젝트에 반영하려면 export 폴더에 두는 것이 아니라 프로젝트 노드 우클릭 ▸ Import 를 사용합니다(13. 임포트 · 익스포트).

익스포트 결과에 최근 편집이 빠졌습니다

표시와 동작이 다른 지점: ARXML 익스포트는 저장된 design/ 파일을 읽습니다. 전체 프로젝트 익스포트와 Extract ECU · Extract Machine 모두 마찬가지입니다. 열려 있는 에디터의 저장되지 않은 내용은 반영되지 않으므로, 익스포트 전에 반드시 저장합니다.

반대로 ECUC 자동 생성(Generate ECUC) 은 열려 있는 에디터의 최신 내용을 먼저 요청하고, 해당 에디터가 없을 때만 디스크를 읽습니다.

내보낸 ARXML을 다시 임포트했더니 다이어그램 배치가 달라졌습니다

의도된 동작입니다. 노드의 좌표와 크기는 ARXML로 나가지 않습니다. 화면 배치는 프로젝트 안에만 남습니다. IVC 노드의 좌표는 IVC 모델에, VFB 화면 배치는 컴포지션마다 design/SWC/Layout/<컴포지션이름>.vfb.layout 파일에 저장됩니다. 임포트할 때 IVC 노드 좌표는 파일에서 읽는 것이 아니라 격자 위에 새로 생성되므로, 같은 모델이라도 배치는 원래와 달라집니다.

배치를 유지하려면 프로젝트 폴더 자체를 옮기거나 복사합니다. ARXML은 모델을 옮기는 수단이지 화면을 옮기는 수단이 아니기 때문입니다.

DBC로 내보내고 싶습니다

현재 버전에서는 DBC 익스포트를 제공하지 않습니다. CAN 정보를 다른 도구로 넘기려면 프로젝트 Export 로 만들어지는 <프로젝트명>_COM.arxml 을 사용합니다 (13. 임포트 · 익스포트 13.6 참조).


20.6 ECUC 생성

IVC 에디터에서 ECU 노드를 선택하면 속성 패널에 ECUC GENERATION 섹션이 나타납니다. 자세한 사용법은 12. ECUC에서 확인할 수 있습니다.

Generate ECUC 버튼이 비활성 상태입니다

선택한 ECU 노드에 CAN 커넥터가 없는 경우입니다. 이때 섹션 상단에 주황색 경고 상자가 표시됩니다.

No CAN connector configured. Please add a CAN connector first to enable ECUC generation.

IVC 에디터에서 그 ECU에 CAN 커넥터를 추가하면 버튼과 모듈 체크박스가 함께 활성화됩니다.

버튼은 눌리는데 아무 일도 일어나지 않습니다

모듈 체크박스가 하나도 선택되어 있지 않으면 버튼을 눌러도 아무 일도 일어나지 않고 메시지도 표시되지 않습니다. 선택 가능한 모듈은 다섯 개이며, 기본값은 모두 체크된 상태입니다. 모듈별 생성 대상 파일은 다음과 같습니다.

모듈생성 대상
CanCan 모듈 설정
CanIfCanIf 모듈 설정
ComCom 모듈 설정
EcuCEcuC 모듈 설정
PduRPduR 모듈 설정

결과 확인: 성공하면 ECUC Configuration generated successfully: <ECU이름> 토스트가 나타나고, 실패하면 ECUC generation failed: <원인> 또는 ECUC generation error: <원인> 이 표시됩니다. 생성 전체가 하나의 실행 취소 단위이므로 Ctrl+Z 한 번으로 되돌릴 수 있습니다.

생성은 됐는데 파라미터가 비어 있거나 부실합니다

모듈 정의가 없으면, 생성기는 정의 기반의 파라미터 보충 단계를 건너뛰고 최소 형태의 설정만 만듭니다. 이때 다음 경고가 남지만 화면에는 표시되지 않습니다.

Definition file not found for <모듈>. Generated config may have incomplete parameters.

표시와 동작이 다른 지점: 이 경고를 포함해 ECUC 생성 경고는 화면에 표시되지 않습니다. 성공 토스트만 나타나므로, 결과가 부실해 보이면 정의 파일 유무를 직접 확인해야 합니다.

같은 이유로 다음 경고들도 화면에 나오지 않습니다.

조건기록되는 경고
CAN 컨트롤러가 없음ECU '<이름>' has no CAN controllers
송수신 CAN 프레임이 하나도 없음ECU '<이름>' has no CAN frames
정의 파일을 읽지 못함Failed to load definition for <모듈>. Skipping enrichment.

해결하려면 ARXML에서 모듈 정의를 먼저 임포트한 뒤 다시 생성합니다.

CAN이 두 개인데 하나만 반영됩니다

현재 ECUC 생성기는 CAN 컨트롤러가 1개라고 가정하고 첫 번째 CAN 컨트롤러만 반영합니다. 다중 CAN 구성은 지원되지 않습니다.


20.7 검증

Validation 패널에는 실행 버튼이 없습니다. 다음 시점에 자동으로 다시 실행됩니다.

  • 모델을 편집했을 때(입력 중에도 갱신됩니다)
  • 탐색기에서 프로젝트 노드를 클릭했을 때 — 에디터가 하나도 열려 있지 않아도 검증됩니다
  • 활성 에디터 탭이 바뀌었을 때 — 그 탭이 속한 프로젝트로 대상이 옮겨갑니다
  • ARXML 임포트가 끝났을 때 — 이때는 디스크 내용을 읽습니다
  • 워크스페이스를 바꿨을 때

자세한 규칙 설명은 14. Validation에서 확인할 수 있습니다.

결과가 비어 있을 때 표시되는 세 가지 문구

행이 하나도 없을 때의 문구는 상태에 따라 다릅니다. 다음 세 가지를 구별하는 것이 중요합니다.

표시되는 문구의미
No validation issues.검증이 정상적으로 실행되었고 위반이 없습니다
Select a project in the Explorer to run validation.대상 프로젝트가 정해지지 않았습니다
Validation could not run. See the developer console for details.검증이 실행되지 못하고 실패했습니다

세 번째는 "문제 없음"이 아닙니다. 이때는 상태바의 Validation(V) 버튼 배지에도 숫자 대신 ! 가 표시되고, 버튼 툴팁이 Validation could not run — open the Validation panel 로 바뀝니다.

두 번째가 표시되면 해당 프로젝트의 에디터를 하나 열거나, 탐색기에서 프로젝트 노드를 클릭합니다.

상태바 배지가 무엇을 뜻하는지 모르겠습니다

상태바 배지의 의미는 다음과 같습니다.

배지의미
없음위반 0건
숫자전체 위반 수입니다(오류 > 경고 > 정보 순으로 색이 정해집니다). 99를 넘으면 99+ 로 표시됩니다
!검증 실행 실패

툴팁은 Validation: N error(s), M warning(s), K info(s) 형식입니다. 패널 제목 옆의 빨간 배지는 오류 수만 표시하며, 오류가 0이면 숨겨집니다.

위반 행을 눌렀는데 아무 데도 이동하지 않습니다

원인은 두 가지입니다.

  1. 그 규칙에 이동 대상(내비게이션 정보)이 아예 없는 경우입니다. 이때는 클릭해도 아무 일도 일어나지 않고 메시지도 나오지 않습니다.
  2. 위반 요소가 이동 대상 에디터를 갖지 않는 영역에 있는 경우입니다. 클릭 이동이 지원되는 영역은 다음 여섯 가지입니다.
위반 영역열리는 에디터
datatype.*DataType 에디터
interface.*Interface 에디터
vfb.*VFB 에디터
ivc.*IVC 에디터
signal.*Signal 에디터
system.*System 페이지

ECUC 구성 · 모듈 정의 관련 위반은 클릭 이동 대상이 없으므로, 해당 파일을 직접 열어 확인합니다.

이동에 성공하면 대상 요소가 선택되고 빨간 표시로 강조됩니다. 다른 행을 누르면 이전 표시는 지워집니다.


20.8 AI

AI 채팅 버튼이 비활성 상태입니다

AI 채팅은 창 위쪽 헤더 오른쪽의 채팅 토글 버튼으로 엽니다. 정상 상태에서 이 버튼의 툴팁은 AI Chat Panel 입니다. 툴팁이 Plan expired 로 바뀌어 있으면 라이선스가 만료(또는 읽기 전용) 상태이며, 버튼이 눌리지 않습니다. 이때 채팅 입력창의 안내 문구도 Plan expired — upgrade to continue 로 바뀝니다.

프로바이더 목록에 아무것도 활성이 아닙니다

프로바이더는 다섯 종류이며, 각각 전제 조건이 다릅니다.

목록 표시 이름종류사용 조건
Claude [OPUS]CLIclaude CLI 설치 + 로그인
Claude [GLM]APIAPI 키 등록
GeminiCLIgemini CLI 설치 + 로그인
CodexCLIcodex CLI 설치 + 로그인
Ollama로컬 서버Ollama 로컬 서버 실행

활성 프로바이더가 없으면 메시지 전송은 LLM provider is not available 로 실패합니다.

프로바이더 관리 다이얼로그는 두 곳에서 열 수 있습니다. 채팅 패널 헤더의 톱니바퀴 버튼(툴팁 Manage AI accounts)을 누르거나, 명령 팔레트(Ctrl+Shift+P)에서 Manage AI Accounts... 를 실행합니다. 참고로 헤더 메뉴 막대(Project / Edit / View / Help)에는 이 항목이 없습니다.

가용성은 30초 주기로 자동 재확인됩니다. 다이얼로그에서 로그인을 시작하면 브라우저나 터미널에서 로그인이 끝나는 시점을 알 수 없으므로, PAIO가 5초 간격으로 최대 2분 동안 상태를 다시 확인합니다. 상태가 바뀌면 그 시점에 확인을 멈춥니다. 2분이 지나도 반영되지 않으면 다이얼로그를 닫았다가 다시 엽니다.

AI가 만든 모델이 마음에 들지 않습니다

Ctrl+Z 로 되돌립니다. AI 채팅이 쓴 변경은 파일이 여럿이어도 편집 이력에 하나의 단위로 기록되므로, 한 번의 실행 취소로 그 쓰기 전체가 되돌아갑니다. Edit ▸ Undo 메뉴에는 Undo AI: 3 file(s) 처럼 쓴 파일 수가 표시됩니다. 다만 요소 이름까지는 표시되지 않습니다.

QuickStart 생성이 실패했습니다

실패한 단계 아래에 Show error detail 이 나타나며, 펼치면 그 단계의 원문 오류를 볼 수 있습니다. 같은 줄의 Retry 로 그 단계만 다시 실행할 수 있고, 하단의 Retry 는 워크플로 전체를 다시 실행합니다. 전체가 실패하면 헤더 제목이 Generation Failed 로 바뀝니다.

각 단계는 스키마 검증에 실패하면 최대 2회까지 자동 재시도한 뒤에야 실패로 처리됩니다. 단계별 LLM 호출 제한 시간은 다음과 같으며, 이 시간을 넘기면 호출이 중단되고 재시도 로직이 동작합니다.

단계제한 시간
step-swc8분
step-signal6분
step-datatype, step-interface5분
step-ivc, step-vfb, step-service, step-validate4분
step-system3분
표에 없는 단계5분

자세한 내용은 15. AI 어시스턴트에서 확인할 수 있습니다.


20.9 코드 · 빌드

Build를 눌렀더니 컴파일러를 못 찾는다는 메시지가 나타납니다

로컬(호스트) 빌드는 번들 gcc / g++ 를 먼저 찾고, 없으면 시스템 PATH 의 컴파일러를 사용합니다. 둘 다 없으면 OS가 낸 실행 실패 메시지가 출력 패널에 그대로 표시됩니다. 이때는 컴파일러를 설치하거나 PATH 를 확인합니다.

원격(WSL · 컨테이너 · SSH) 빌드에서는 종료 코드가 127이거나 command not found 가 감지되면 다음 안내가 추가로 출력됩니다.

Hint: 'gcc' was not found in this environment. Install a C/C++ toolchain
(e.g. 'sudo apt install build-essential' on Debian/Ubuntu).

참고로 기본 컴파일 옵션은 -Wall -g -std=c++17 이고, 확장자가 .cpp .hpp .cc .cxx 이면 g++, 그 외에는 gcc 가 선택됩니다. 제한 시간은 로컬 60초, 원격 120초입니다.

.rs 파일 하나만 빌드하려는데 되지 않습니다

Rust는 Cargo.toml 이 있는 프로젝트 구조가 필요합니다. 단일 .rs 파일에서 Build & Run 을 실행하면 출력 패널에 다음이 표시됩니다.

Rust files require a Cargo.toml project for Build & Run.
Create a Cargo project (cargo new <name>) or use the terminal:
rustc "<파일경로>" && ./<output>

Build & Run 은 파일 위치에서 상위로 최대 12단계까지 올라가며 먼저 CMakeLists.txt 를 찾고, 없으면 Cargo.toml 을 찾습니다. 둘 다 없을 때만 위 안내가 나타납니다.

code/Cargo.toml 을 직접 고쳤는데 되돌아갑니다

의도된 동작입니다. code 폴더(하위 폴더 포함, target.git 은 제외)에 .rs 파일이 하나라도 있으면 PAIO가 code/Cargo.toml자동으로 다시 만들어 덮어씁니다. rust-analyzer가 진단을 내려면 이 파일이 필요하기 때문입니다.

다시 쓰는 경로가 둘이고, 생성되는 내용이 미묘하게 다릅니다.

실행 시점생성되는 version
앱 시작 직후, 그리고 프로젝트 목록이 바뀔 때(새 프로젝트 생성, 워크스페이스 전환)0.1.0
코드 에디터에서 .rs 파일을 열어 rust-analyzer가 시작될 때0.1.2

두 경로 모두 패키지 이름은 paio-code, 에디션은 2021 이고, .rs 파일마다 [[bin]] 항목이 하나씩 붙습니다. 버전 값만 서로 다르므로, .rs 파일을 열었다가 앱을 다시 시작하면 그 줄이 왔다 갔다 하는 것처럼 보입니다. 빌드에는 영향이 없습니다.

직접 관리하는 Cargo 프로젝트는 code 폴더 바로 아래가 아니라 하위 폴더에 두어야 덮어쓰이지 않습니다.

코드 완성이 동작하지 않습니다

언어 서버가 아직 시작 중이거나 실패했을 수 있습니다. 코드 에디터 아래쪽의 PROBLEMS 패널에 진단이 올라오는지 먼저 확인합니다. Rust라면 위의 Cargo.toml 항목도 함께 확인하는 것이 좋습니다. 원격 환경(SSH · 컨테이너 · WSL)이라면 20.10 원격의 배포 조건을 확인합니다.


20.10 원격

원격 언어 서버가 배포되지 않습니다

번들 바이너리는 glibc 기반 linux-x64 전용입니다. 다음 조건 중 하나라도 해당하면 배포가 거부됩니다.

조건판정
uname -s -mLinux + x86_64 가 아님거부 (not-linux-x64)
/lib/ld-musl-* 존재 (Alpine 등 musl 계열)거부 (not-linux-x64)
번들 바이너리가 패키지에 없음거부 (bundle-missing)
원격 $HOME 을 확인하지 못함거부 (home-unresolved)

SSH 원격에서 이 상황이 되면 다음 토스트가 표시됩니다(같은 워크스페이스에서는 한 번만 나타납니다).

This remote server is not a supported environment (e.g. arm64, Alpine/musl, or non-Linux),
so code intelligence (completion / diagnostics) is unavailable.
PAIO bundles language servers for glibc Linux x64 remotes only.

WSL 배포는 토스트 대신 배포 배너에 오류 문자열이 표시되며, 문구는 두 가지입니다.

조건오류 문자열
배포판이 x86_64가 아님WSL distro is not x86_64 — only Linux x64 is supported
musl(Alpine) 계열 배포판WSL distro uses musl (Alpine) — only glibc is supported

연결·해제 후 화면이 새로 고쳐집니다

의도된 동작입니다. 원격 연결 · 해제 · 로컬 폴더로 복귀는 모두 창을 다시 로드해서 상태를 명확히 초기화합니다.

주의: 이 재로드는 저장 여부를 묻지 않습니다. 저장하지 않은 편집은 그대로 사라지므로, 연결이나 해제를 실행하기 전에 반드시 저장합니다.

컨테이너 메뉴에서 Rebuild가 보이지 않습니다

Rebuild ContainerOpen Folder in Container... 로 진입한 경우에만 나타납니다. Attach to Running Container... 로 붙은 경우에는 devcontainer.json 이 없어 다시 빌드할 대상 자체가 없으므로, 메뉴에 표시되지 않습니다. 같은 이유로 Reopen Folder LocallyOpen Folder in Container... 로 진입했을 때만 나타납니다.

원격 개발 전반은 17. 원격 개발 (SSH · Dev Container · WSL)에서 확인할 수 있습니다.


20.11 성능

노드가 많은 다이어그램이 느립니다

IVC 에디터와 VFB 에디터에는 계속 그려지는 요소를 끄는 토글이 캔버스 왼쪽 아래 툴바에 두 개 있습니다. 아이콘 버튼이라 이름은 툴팁으로만 확인할 수 있습니다.

툴팁끄면 사라지는 것
Toggle Grid배경 격자
Toggle Connector Animation커넥터를 따라 흐르는 애니메이션

두 토글은 화면 표시만 바꾸고 모델은 건드리지 않으므로 언제든 되돌릴 수 있습니다. 같은 툴바의 Fit to View 는 전체를 한 화면에 넣는 버튼이라, 노드가 많을수록 한 번에 그려야 할 양이 늘어납니다. 작업할 영역만 확대해 두면 그리는 양이 줄어듭니다.

탭이 많아 느립니다

동시에 열 수 있는 탭은 20개입니다(20.3의 탭 한도 항목 참고). 탭을 우클릭한 뒤 Close Saved 로 저장된 탭만 정리합니다. 다만 Close OthersClose All 은 저장하지 않은 탭도 확인 없이 닫으므로 주의가 필요합니다.


20.12 그 밖의 확인 사항

자주 쓰는 확인 방법을 정리하면 다음과 같습니다.

확인방법
앱 버전상태바 오른쪽의 v0.5.0 표시, 또는 Help ▸ About PAIO
제품 정보 · 연락처Help ▸ About PAIO — 버전과 contact@popcornsar.com 이 표시됩니다
업데이트 확인Help ▸ Check for Updates
문의Help ▸ Report Issue — 기본 브라우저에서 https://autosar.io/support/qna 가 열립니다
명령 이름으로 기능 찾기명령 팔레트(Ctrl+Shift+P)

macOS에서는 OS 메뉴 막대의 Help 메뉴도 함께 표시되며, 그쪽의 Report Issuehttps://github.com/popcornsar/PAIO/issues 를 엽니다. Windows와 Linux는 창 테두리가 없는 커스텀 타이틀바를 쓰므로 앱 안의 Help 메뉴만 보입니다.

업데이트 확인 결과가 무엇을 뜻하는지 모르겠습니다

PAIO는 새 버전이 나왔는지 알려 주기만 하고, 스스로 내려받거나 설치하지 않습니다. 화면에서 본 문구는 다음 표에서 찾습니다.

결과표시버튼
새 버전 있음PAIO <버전> is now available.Later / Download
최신PAIO is up to date.OK
실패Update check failed: <원인>Dismiss

실패 원인 문자열은 Could not reach update server(피드에 닿지 못했거나 응답에서 버전을 읽지 못한 경우) 또는 Auto-update is disabled in development mode(개발 모드 실행)입니다. Download 를 누르면 기본 브라우저에서 https://autosar.io/support 가 열립니다.

백그라운드 확인이 언제 실행되고 무엇을 알리는지, 상태바 인디케이터를 클릭하면 어떻게 되는지는 3.5 에 정리했습니다.


20.13 자주 보는 메시지 모음

증상이 아니라 화면에서 본 문구로 찾아야 할 때 사용하는 색인입니다.

라이선스 · 무결성

문구항목
Plan expired20.8
Plan expired — upgrade to continue20.8
License Expired20.1
Upgrade Required20.1
Signed in on Another Device20.1
PAIO could not verify the integrity of its installation.20.1

임포트 · 익스포트

문구항목
Import rejected: an import is already running. Finish or cancel it first.20.4
Import Source Conflicts20.4
Nothing has been written yet — your project files stay untouched.20.4
Conflict Resolution — N conflicts20.4
Unresolved Conflicts20.4
N undecided conflicts will be overwritten with the imported values.20.4
Discard field edits?20.4
Discards this import and restores your project to its pre-import state.20.4
Conflicting files keep your current values; already-imported files stay applied.20.4
Import cancelled, but rollback could not restore: ...20.4
Import complete — conflicts resolved: ...20.4
ECUC Configuration Import — Partial20.4
Export failed: OFFLINE_EXPORT_DENIED: A server connection is required20.5
Export failed: PLAN_EXPIRED: Export is not permitted on this plan20.5
Export failed: INTEGRITY_EXPORT_DENIED: Installation integrity check failed20.5

편집 · 검증 · 생성

문구항목
... changed on disk. Keeping your unsaved edits - save to overwrite the external change.20.3
Do you want to save the changes to ...?20.3
Name is required20.3
Must start with a letter, then letters/digits/underscores only20.3
Project name cannot be empty / Project "..." already exists20.2
"..." is a reserved system name and cannot be used20.2
Project name contains invalid characters20.2
Validation could not run. See the developer console for details.20.7
Select a project in the Explorer to run validation.20.7
No validation issues.20.7
No CAN connector configured. Please add a CAN connector first to enable ECUC generation.20.6
ECUC Configuration generated successfully: ...20.6

코드 · 원격

문구항목
Rust files require a Cargo.toml project for Build & Run.20.9
Hint: 'gcc' was not found in this environment.20.9
This remote server is not a supported environment ...20.10
WSL distro uses musl (Alpine) — only glibc is supported20.10
WSL distro is not x86_64 — only Linux x64 is supported20.10
PAIO is up to date. / Update check failed: ...20.12