자주 묻는 질문
궁금한 점이 있는데 여기에서 찾을 수 없는 경우 이메일을 보내주세요.
"src\main.cpp: fatal error C1041: cannot open program database 'C:\Development\Project.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS" 오류가 계속 발생합니다.
컴파일러에서 생성된 .PDB 파일 (C/C++ -> Output Files -> Program Database File Name) 과 링커에서 생성된 .PDB 파일 (Linker -> Debugging -> Generate Program Database File) 이 모두 동일한 출력 파일로 설정되어 있을 때 발생합니다. 이 경우 디버거는 디버깅 중에 .PDB 파일을 잠그고 컴파일러는 컴파일 시 동일한 파일에 쓰려고 시도합니다.
컴파일러에서 생성된 .PDB 파일은 빌드 아티팩트가 아닌 중간 파일이라는 점에 유의하세요. 따라서 해당 컴파일러 옵션을 그대로 두는 것이 가장 좋습니다. 또한 컴파일러와 링커가 모두 동일한 .PDB 파일을 쓰는 경우 대규모 프로젝트에서 링크 시간이 최대 4배까지 길어진다는 보고가 있었으므로 컴파일러와 링커 PDB는 별도의 파일을 사용하는 것이 좋습니다(Live++를 사용하지 않고 증분 및 전체 빌드의 경우).
컴파일러가 계속 "src\main.cpp: fatal error C1041: cannot open program database 'C:\Development\vc141.idb'; if multiple CL.EXE write to the same .PDB file, please use /FS" 을 보고합니다.
이는 기본 편집 및 계속이 활성화되어 있고 'C/C++ -> General -> Debug Information Format -> Program Database for Edit and Continue (/ZI)' 컴파일러 옵션이 사용되는 경우 발생합니다. 디버그 정보 형식은 'C7 compatible (/Z7)' 또는 'Program Database (/Zi)' 으로 설정해야 합니다.
컴파일러가 여러 번 cl : Command line warning D9007 : '/external:I' requires '/external:W'; option ignored 경고를 표시한 후 포함이 누락됩니다.
이 문제를 해결하려면 어떻게 해야 하나요?
Visual Studio 도구 체인에 문제가 있을 가능성이 높습니다.
포함 경로를 지정할 때 INCLUDE 환경 변수를 사용하지만 Live++에서 무시되는 것 같습니다.
무슨 일이죠?
Visual Studio 툴체인에 문제가 있는 것 같습니다.
Live++에서 "함수 'Bar'의 0xF00 지시가 패치하기에 너무 짧습니다. 이 함수에 대한 변경사항은 준수되지 않습니다.."
어떻게 해야 하나요?
이 문제는 올바른 컴파일러 설정으로 빌드되지 않은 번역 단위로 인해 발생할 가능성이 높습니다.
Live++에서 "툴체인 'Foo'에 대한 vcvars*.bat 환경 판단에 실패했습니다." 보고
무엇을 변경해야 하나요?
Visual Studio 컴파일러 또는 링커를 사용하는 경우, 후속 컴파일을 위한 툴체인 환경을 설정하기 위해 vcvars*.bat 파일을 호출해야 합니다. Live++는 기본 설치 디렉터리의 상대 경로가 그대로 유지되는 한 Live++ 지원 애플리케이션을 빌드하는 데 사용된 툴체인을 자동으로 감지하고 해당 vcvars*.bat 파일을 찾습니다.
사용자 지정 툴체인 또는 빌드 시스템을 사용하는 경우 컴파일러(cl.exe)와 링커(link.exe)가 기본값이 아닌 상대 경로 구조로 유지되는 경우가 많으므로 올바른 vcvars*.bat 파일을 찾기가 더 어려워집니다. 이 경우 Live++는 호출된 컴파일러 또는 링커와 동일한 디렉터리에 다음 파일 중 하나가 있을 것으로 예상합니다:
- vcvars64.bat
- vcvarsamd64_x86.bat
- vcvarsx86_amd64.bat
- vcvars32.bat
컴파일러 환경 설정을 위해 자체 파일을 제공할 수 있으며, 해당 파일의 이름만 올바르게 지정되어 있다면 Visual Studio의 파일을 복사할 필요가 없습니다.
Live++가 파일을 다시 컴파일하려고 할 때 컴파일러를 시작할 수 없습니다.
설정에서 분산/원격 빌드를 사용하나요? 그렇다면 필요한 환경설정을 설정해 주세요.
Live++에서 링커 환경을 찾을 수 없습니다.
어떤 설정을 구성해야 하나요?
부분 PDB(예: /DEBUG:FULL)가 아닌 전체 PDB (예: /DEBUG:FASTLINK) 를 생성해야 합니다.
바로가기를 누르면 Live++가 아무것도 하지 않습니다.
내가 뭘 놓친 건가요?
첫째, 적절한 API 함수 중 하나를 호출하여 해당 모듈(.EXE 또는 .DLL)에 대해 Live++ 에이전트가 생성되고 Live++가 활성화되어 있는지 확인하세요.
둘째, 바로가기를 누르기 전에 변경 사항을 저장해야 합니다. Live++가 여전히 아무 작업도 수행하지 않는다면 모듈에 포함된 번역 단위를 감지하지 못한 것입니다. 이 경우 컴파일러 및 링커 설정이 올바른지 확인하세요.
셋째, Live++가 작동하는 데 필요한 모든 .PDB, .OBJ, .CPP 및 .H 파일을 찾을 수 있는지 확인하세요.
그래도 문제가 지속되고 Live++가 설정에서 작동하지 않는 이유를 파악할 수 없는 경우 알려주세요.
모든 방법을 시도했지만 Live++가 내 설정에서 작동하지 않는 것 같습니다.
이 문제를 어떻게 신고하나요?
발생한 문제에 대한 설명과 함께 Broker, Bridge 및 Agent 로그를 첨부하여 문의해 주세요.
Broker 메인 메뉴에서 도구 -> Broker 로그 파일 표시... 선택하면 브로커 로그 파일을 확인할 수 있습니다.
Bridge 및 Agent 로그 파일은 프로세스 보기의 컨텍스트 메뉴에서 선택한 로컬 프로세스에 대한 로그 파일 표시... 선택하여 확인할 수 있습니다.