0

VS2015로 Clang 코드베이스를 조사 중이며 .sln 파일이 CMake에 의해 생성됩니다. 솔루션을 Debug/x64으로 구성했는데 libs와 함께 생성 된 .pdb 개의 파일을 볼 수는 있지만 clang 실행 파일에 링크 된 lib 코드를 중단 할 수는 없습니다.VS2015에서 Clang 정적 연결 라이브러리를 디버깅하는 방법

예를 들어, 구문 분석 중에 제어 흐름이 통과해야하는 clangParse 모듈에서 일부 중단 점을 설정했지만 AST가 인쇄 된 후 디버거가 clangParse 모듈의 중단 점에서 멈추지 않고 clang 모듈 자체에 설정된 중단 점.

실행 파일과 정적 라이브러리가있는 수동으로 작성된 일부 솔루션의 경우 해당 라이브러리를 디버깅 할 수 있습니다. 이것이 CMake가 생성 한 Clang/LLVM 솔루션에 대해 왜 작동하지 않는지 확실치 않습니다.

여기서 특별한 설정이 필요합니까?

+0

이 문제를 재현하기위한 자세한 단계를 알려주십시오. 이 프로젝트는 "디버깅하지 않고 시작 (Ctrl + F5)"을 사용하여 성공적으로 컴파일하면 컴파일됩니까? 중단 점에 도달하지 않고 프로젝트가 정상적으로 컴파일되면 출력 창에 유용한 메시지가 나타 납니까? 디버깅 모드에서 마우스를 중단 점에 놓거나 디버그 메뉴 -> Windows -> 모듈 창을 클릭하십시오. 메시지가 나타 납니까? –

+0

@ Eddie-MSFT 예 성공적으로 컴파일하고 실행할 수 있습니다. clang 프로젝트의 중단 점을 중단 할 수는 있지만 다른 정적 연결 라이브러리 (예 : clangParse)는 중단 할 수 없습니다. 그리고 나는 제어 흐름이 내가 설정 한 중단 점을 통과해야한다고 확신합니다. – Jamboree

+0

예외 설정 창을이 링크 (https : //msdn.microsoft.com/en-us/library/x85tt0dd.aspx)로 설정할 수 있습니까? 라이브러리를 호출 할 코드 줄 (A)에 중단 점을 추가 한 다음 적중 (A) 후 "단계별 실행 (F11)"을 사용하여 디버그합니다. 따라서 한 단계 씩 응용 프로그램을 디버깅 할 수 있습니다. 메시지. TOOLS-> Options-> Debugging 아래의 "Source is not disassembly"옵션을 체크하십시오. 여전히 메시지가 없으면 간단한 샘플을 공유 할 수 있습니까? –

답변

1

문제는 Clang 드라이버가 Windows에서 자체적으로 자식 프로세스를 생성하고 모든 흥미로운 작업이 자식 프로세스에서 수행되므로 libs의 중단 점이 다른 프로세스에 있기 때문에 충돌하지 않을 것입니다.

이 문제를 해결하려면 Microsoft Child Process Debugging Power Tool을 설치하고 하위 프로세스 디버깅을 사용하도록 설정하면 자식 프로세스가 디버거에 연결됩니다.