경고 / debug 스위치에 대한
MSDN 설명서 (Visual Studio에서는 디버그 정보 임)가 오래된 것 같습니다! 이것은 잘못된 것입니다.
/ debug : full 을 사용 하는 경우 JIT 최적화 코드의 속도와 크기에 약간의 영향을 미치고 / debug : full을 사용하면 코드 품질에 약간의 영향이 있음을 유의하십시오 . 릴리스 코드 생성을 위해 / debug : pdbonly 또는 PDB 없음을 권장 합니다.
/ debug : pdbonly 와 / debug : full의 한 가지 차이점은 / debug : full을 사용하면 컴파일러가를 내보내고 DebuggableAttribute
JIT 컴파일러에 디버그 정보를 사용할 수 있음을 알리는 데 사용된다는 것입니다.
그렇다면 이제 무엇이 사실입니까?
- Pdb 전용 – .NET 2.0 이전에는 출시 된 제품 (고객 컴퓨터)의 크래시 덤프를 조사하는 데 도움이되었습니다. 그러나 디버거를 연결할 수 없었습니다. .NET 2.0에서는 그렇지 않습니다. 그것은는 정확히 같은 전체 .
- Full – 크래시 덤프를 조사하는 데 도움이되며 릴리스 빌드에 디버거를 연결할 수도 있습니다. 그러나 MSDN에서 언급 한 것과 달리 .NET 2.0부터는 성능에 영향을주지 않습니다. Pdb-only 와 정확히 동일 합니다 .
정확히 동일하다면 왜 이러한 옵션이 있습니까? John Robbins (윈도우 디버깅 신) 는 역사적 이유 때문에 이것들이 있다는 것을 알아 냈습니다 .
.NET 1.0에서는 차이가 있었지만 .NET 2.0에서는 그렇지 않습니다. .NET 4.0이 동일한 패턴을 따르는 것 같습니다. CLR 디버깅 팀과 다시 한 번 확인한 후에는 전혀 차이가 없습니다.
JITter가 디버그 빌드를 수행하는지 여부를 제어하는 것은 / optimize 스위치입니다. <…>
결론은 / optimize + 및 / debug 스위치를 사용하여 릴리스 빌드를 빌드하여 소스 코드로 디버깅 할 수 있도록한다는 것입니다.
그런 다음 그는 그것을 증명하기 위해 계속합니다.
이제 최적화는 별도의 스위치의 일부입니다 /optimize
(Visual Studio에서는라고 함 Optimize code
).
간단히 말해, DebugInfo 설정 pdb-only 또는 full에 관계없이 동일한 결과를 얻을 수 있습니다. 권장 사항은 출시 된 제품에서 크래시 덤프를 분석하거나 디버거를 연결하지 못하므로 None 을 피하는 것입니다.