여러 이유 때문에 필자는 함수에 대한 최적화 된 컴파일러 출력을 살펴 보는 것이 유용하거나 흥미로운 경우가 종종 있습니다.최적화 된 jitted .NET 코드의 디스 어셈블리를 보려면 어떻게해야합니까?
언 매니지 된 C/C++ 코드의 경우 가장 좋아하는 방법은 릴리스 모드에서 컴파일하고 관심있는 기능에 중단 점을 지정하고 실행 한 다음 중단 점에 도달하면 Visual Studio에서 디스 어셈블리를 확인하는 것입니다.
최근에 C# 프로젝트에서이 작업을 시도했지만 그 기술이 작동하지 않는다는 것을 발견했습니다. 릴리스 모드에서도 볼 수있는 디스 어셈블리가 분명히 최적화되어 있지 않습니다. 디버그 ... 옵션 및 설정 ... 디버깅 ... 일반 ... 모듈로드시 JIT 최적화 사용 안 함 옵션을 선택했는데, 원하는대로 더 가까이 다가 갈 수 있습니다. 이제는 실행하려고 할 때 경고 메시지가 나옵니다. 그런 다음 중단 점에서 멈추어서 해체를 볼 수 없습니다.
그렇다면 함수에 대한 CLR (4.0) 지터의 분해되고 최적화 된 출력을보고 싶다면 그것에 대해 가장 좋은 방법은 무엇입니까? 분명한 것은 IL 분해 (반사경에서 볼 수 있음)가 아닌 x86 (또는 선호하는 x86_64) 분해를보고 싶습니다.
그런 일이 발생하면 그 사람을 사랑 (증오)하지 않으시겠습니까? :) – leppie
@ leppie : 꽤 많이. 해결책을 찾기 위해 검색 할 문구를 아는 솔루션을 알아야 할 필요가있는 경우입니다 ... –