Programing

C # 릴리스 버전에는 여전히 .pdb 파일이 있습니다.

lottogame 2020. 12. 10. 08:27
반응형

C # 릴리스 버전에는 여전히 .pdb 파일이 있습니다.


C #으로 작성된 애플리케이션의 릴리스 버전을 배포하고 싶습니다.

Release구성을 사용하여 빌드 할 때 .pdb파일이 생성되는 것을 볼 수 있습니다. 즉, 내 애플리케이션을 여전히 디버깅 할 수 있습니다. 이것은 또한 일부 디버그 정보가 내 코드 어딘가에 존재하여 약간 느려짐을 의미합니다.

이것이 사실이라면 바이너리에서 생성 된 디버그 정보를 어떻게 완전히 억제 할 수 있습니까? 석방 이유도 알고 .pdb계십니까? Release구성은 한 Optimize code체크 만 TRACE상수가 아닌 정의된다 DEBUG.

도와 주셔서 감사합니다.


pdb 파일 생성을 비활성화 하려면 하단에 "Advanced build settings"있는 "Advanced..."버튼 " 을 클릭 한 후 프로젝트 속성에서 사용할 수 있는 대화 상자 를 사용해야합니다 Build.

릴리스 빌드 구성 Output - Debug info:None대해로 설정 하면 pdb 파일이 생성되지 않습니다.


기본값은 릴리스 빌드 용 PDB도 생성하는 것입니다. 이는 기능이며 비활성화해서는 안됩니다. PDB를 생성하면 디버깅 할 때 더 많은 정보를 얻을 수 있습니다. 코드의 성능은 PDB 파일의 존재에 의해 어떤 식 으로든 영향을받지 않습니다.


릴리스 배포와 함께 .PDB를 제공 할 필요는 없지만 유지하는 데 유용합니다. 예를 들어 컴퓨터의 PDB를 사용하여 다른 컴퓨터에서 실행되는 코드를 원격으로 디버깅하여 예외의 줄 번호를 가져올 수 있습니다. 나오다.

.PDB를 사용하지 않으면 줄 번호와 파일 이름이 스택 추적에 포함되지 않으므로 디버깅하기가 훨씬 더 어려워집니다.


빌드-> 고급 ...-> 디버그 정보 :의 프로젝트 속성에서 pdb / 심볼 생성을 제어합니다. 옵션은 다음과 같습니다.

  • 없음 (기호 정보 없음 )
  • 전체 (.pdb가 생성되고 일부 기호 정보가 어셈블리에 포함됨)
  • pdb 전용 (.pdb가 생성되지만 어셈블리는 영향을받지 않음)

자세한 내용은 http://msdn.microsoft.com/en-us/library/8cw0bt21%28VS.80%29.aspx 를 참조하십시오.

나는 강하게 당신이 PDB 전용 옵션을 선택하는 것이 좋습니다 되지 여전히 당신에게 어셈블리에 영향을주지 않고 심볼 정보를 제공으로 none 옵션을 - 당신은 아마이이 릴리스에 당신이 가지고있는 현재 설정 빌드 것을 발견 할 것이다.


컴파일러가 .pdb파일을 생성 하도록하는 것은 코드를 최적화하는 것과 상호 배타적이지 않습니다.

이 주제에 대한 자세한 내용은 다음 블로그 항목을 참조하십시오 .

참고 URL : https://stackoverflow.com/questions/2371032/c-sharp-release-version-has-still-pdb-file

반응형