2017-03-04 3 views
4

이상, 우리는 두 가지 방법으로 연타를 사용할 수 있습니다"Clang with Microsoft CodeGen"과 "LLVM-vs2014"의 차이점은 무엇입니까? 비주얼 스튜디오 2015에서

    Platform Toolset
  1. 선택 Clang with Microsoft CodeGen;

  2. LLVM-3.8-win64.exe을 설치하고 Platform Toolset으로 LLVM-vs2014을 선택하십시오. clang 3.8 :

나는 두 가지 방법 모두 동일한 컴파일러를 사용 알고있다. 그러나, 나는 그들 사이의 차이점을 모르겠습니다.

내 경험에 따르면 Clang with Microsoft CodeGenLLVM-vs2014보다 디버깅하기 쉽습니다. 즉 :

  1. 내가 할 수있는 단계 VC++가하는대로로 Clang with Microsoft CodeGen 단계에 의해 만들어진 프로그램을 디버깅;

  2. "LLVM-vs2014"로 작성된 프로그램은 소스 수준에서 단계별로 디버깅 할 수 없지만 프로그램은 예상대로 실행될 수 있습니다.

그래서, 내 질문은 :

LLVM-vs2014 비주얼 스튜디오에서 소스 레벨 디버깅을 지원하지 않습니다?

Visual Studio에서 소스 수준의 디버깅을 지원하기 위해 Microsoft에서만 제공 한 Clang with Microsoft CodeGen입니까?

+2

Clang은 컴파일러의 프런트 엔드 만 제공합니다. 더 나은 오류보고는 명성에 대한 주장입니다. 다른 누군가가 백엔드, 코드 생성기 및 최적화 프로그램을 제공합니다. VS 제공 도구 세트를 사용하는 것은 Microsoft의 것입니다. 그러나 다른 것을 사용한다면 당신은 LLVM으로 당신 자신을 가지고옵니다.그들은 드럼에 대해 두드리는 일을 많이하지 않으며, 예외적 인 인도는 전통적으로 집요한 지점이었습니다. 그리고 확실히, 디버깅이 문제가됩니다. VS에서 제공하는 디버거 엔진에 의존 할 수 없습니다. LLVM 패키지의 일부인 lldb가 필요합니다. Clang-cl은 MSFT 단점을 수용하기위한 프런트 엔드 조정과 같습니다. –

답변

5

저는 두 가지 방법 모두 동일한 컴파일러를 사용합니다. clang 3.8. 그러나, 나는 그들 사이의 차이점을 모르겠습니다.

차이점은 입니다.

Clang with Microsoft CodeGen의 구문 분석에 대한 Clang을 사용하고 있습니다. 하지만 MSVC의 코드 생성기가 시작되어 LLVM과 관련된 모든 것이 사용되지 않습니다.

LLVM-vs2014은 모든 컴파일 단계에서 Clang을 완전히 사용하고 있습니다. LLVM을 사용하여 코드를 생성합니다. 따라서 디버깅 정보가 Visual Studio에서 기대하는 것과 호환되지 않는 것은 당연합니다.

둘 다 동일한 런타임을 사용한다는 점에 유의해야합니다. Clang은 Microsoft 헤더를 구문 분석하고 해당 언어 확장을 사용할 수있게하는 clang-cl 모드를 사용합니다.

따라서 차이점은 중간 및 백 엔드 단계입니다.