Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 11개 있습니다.)
.NET Framework: 202. CLR JIT 컴파일러가 생성한 기계어 코드 확인하는 방법
; https://www.sysnet.pe.kr/2/0/975

.NET Framework: 210. Windbg 환경에서 확인해 본 .NET 메서드 JIT 컴파일 전과 후
; https://www.sysnet.pe.kr/2/0/1023

.NET Framework: 395. C# - 프로퍼티로 정의하면 필드보다 느릴까요?
; https://www.sysnet.pe.kr/2/0/1545

.NET Framework: 396. C# - 프로퍼티로 정의하면 필드보다 느릴까요? - windbg / ollydbg
; https://www.sysnet.pe.kr/2/0/1546

.NET Framework: 542. 닷넷 - 특정 클래스가 로드되었는지 여부를 알 수 있을까?
; https://www.sysnet.pe.kr/2/0/10888

.NET Framework: 545. 닷넷 - 특정 클래스가 로드되었는지 여부를 알 수 있을까? - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/10893

.NET Framework: 763. .NET Core 2.1 - Tiered Compilation 도입
; https://www.sysnet.pe.kr/2/0/11539

디버깅 기술: 161. Windbg 환경에서 확인해 본 .NET 메서드 JIT 컴파일 전과 후 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/12133

.NET Framework: 2015. C# - 인라인 메서드(inline methods)
; https://www.sysnet.pe.kr/2/0/13063

.NET Framework: 2016. C# - JIT 컴파일러의 인라인 메서드 처리 유무
; https://www.sysnet.pe.kr/2/0/13064

닷넷: 2132. C# - sealed 클래스의 메서드를 callback 호출했을 때 인라인 처리가 될까요?
; https://www.sysnet.pe.kr/2/0/13391




닷넷 - 특정 클래스가 로드되었는지 여부를 알 수 있을까? - 두 번째 이야기

지난 글에서 이에 대해 알아봤었는데요.

닷넷 - 특정 클래스가 로드되었는지 여부를 알 수 있을까?
; https://www.sysnet.pe.kr/2/0/10888

이 외에도 한가지 방법이 더 있긴 합니다. 바로 .NET Profiler를 사용하는 것인데... 어찌 보면 로드 여부를 알기 위해 프로파일러를 적용하는 것은 더 현실성이 없긴 합니다. ^^

그래도 알고는 있는 게 좋겠지요. ^^

프로파일러를 적용하면 타입이 로드되는 것에 대한 콜백을 받을 수 있습니다.

ICorProfilerCallback::ClassLoadFinished Method
; https://learn.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/icorprofilercallback-classloadfinished-method

전달되는 인자에 classId 값이 있는데요. 바로 이것이 타입 정보를 가리킵니다.

HRESULT CDotnetProfiler::ClassLoadFinished(ClassID classId, HRESULT hrStatus)
{
    // classId를 이 순간에 보관해 둠.
}

classId 값은 메타데이터 정보가 아니고 해당 타입 정보가 올라온 메모리의 주소이므로 실행 시마다 그 값이 변경됩니다.

그리고, 닷넷에서는 그 값을 Type.TypeHandle 속성 값으로 알아낼 수 있는데 따라서 다음과 같은 식으로 코드를 만들어 타입 로딩 여부를 판별할 수 있습니다.

private static bool IsTypeLoaded(Type type)
{
    long typeId = type.TypeHandle.Value.ToInt64(); // 타입 정보가 올라온 메모리의 주소값이므로 Value는 IntPtr 타입.
    bool isLoaded = false;

    // ...C/C++ DLL에서 노출해주는 함수를 호출...
    // 가령, 이런 식으로...
    // isLoaded = MyProfilerAPI_IsLoaded(typeId);

    return isLoaded;
}

더 이상은, 타입 로드를 판별할 수 있는 적당한 방법이 떠오르질 않는군요. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 4/4/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 91  [92]  93  94  95  96  97  98  99  100  101  102  103  104  105  ...
NoWriterDateCnt.TitleFile(s)
11669정성태8/24/201822471개발 환경 구성: 394. 윈도우 환경에서 elasticsearch의 한글 블로그 검색 인덱스 구성
11668정성태8/24/201833581오류 유형: 478. 윈도우 업데이트(KB4458842) 이후 SQL Server 서비스 시작 오류
11667정성태8/24/201819430오류 유형: 477. "Use Unicode UTF-8 for worldwide language support" 옵션 설정 시 SQL Server 2016 설치 오류 [1]
11666정성태8/22/201819350사물인터넷: 37. 아두이노 - 코딩으로 대신하는 오실레이터 회로의 소리 출력파일 다운로드1
11665정성태8/22/201822904사물인터넷: 36. 오실레이터 회로 동작을 아두이노의 코딩으로 구현하는 방법파일 다운로드1
11664정성태8/22/201822407개발 환경 구성: 393. 윈도우 환경에서 elasticsearch의 한글 형태소 분석기 설치 [1]
11663정성태8/22/201825201개발 환경 구성: 392. 윈도우 환경에서 curl.exe를 이용한 elasticsearch 6.x 기본 사용법
11662정성태8/21/201817985사물인터넷: 35. 병렬 회로에서의 커패시터파일 다운로드1
11661정성태8/21/201820631사물인터넷: 34. 트랜지스터 동작 - 컬렉터-이미터 간의 저항 측정파일 다운로드1
11660정성태8/19/201820088사물인터넷: 33. 세라믹 커패시터의 동작 방식파일 다운로드1
11659정성태8/19/201820124사물인터넷: 32. 9V 전압에서 테스트하는 PN2222A 트랜지스터파일 다운로드1
11658정성태8/18/201823555사물인터넷: 31. 커패시터와 RC 회로파일 다운로드3
11657정성태8/18/201821762사물인터넷: 30. 릴레이(Relay) 제어파일 다운로드3
11656정성태8/16/201816762사물인터넷: 29. 트랜지스터와 병렬로 연결한 LED파일 다운로드1
11655정성태8/16/201819347사물인터넷: 28. 저항과 병렬로 연결한 LED파일 다운로드1
11654정성태8/15/201820666사물인터넷: 27. 병렬 회로의 저항, 전압 및 전류파일 다운로드1
11653정성태8/14/201821207사물인터넷: 26. 입력 전압에 따른 LED의 전압/저항 변화 [1]파일 다운로드1
11652정성태8/14/201818617사물인터넷: 25. 컬렉터 9V, 베이스에 5V와 3.3V 전압으로 테스트하는 C1815 트랜지스터파일 다운로드1
11651정성태8/14/201824330사물인터넷: 24. 9V 전압에서 테스트하는 C1815 트랜지스터 [1]파일 다운로드3
11650정성태8/14/201818516사물인터넷: 23. 가변저항으로 분압파일 다운로드1
11649정성태8/12/201820373사물인터넷: 22. 저항에 따른 전류 테스트파일 다운로드1
11648정성태8/12/201821688사물인터넷: 21. 퓨즈를 이용한 회로 보호파일 다운로드3
11647정성태8/8/201822537오류 유형: 476. 음수의 음수는 여전히 음수가 되는 수(절대값이 음수인 수)
11646정성태8/8/201817858오류 유형: 475. gacutil.exe 실행 시 "Failure initializing gacutil" 오류 발생
11645정성태8/8/201820510오류 유형: 474. 닷넷 COM+ - Failed to load the runtime. [1]
11644정성태8/6/201823541디버깅 기술: 118. windbg - 닷넷 개발자를 위한 MEX Debugging Extension 소개
... 91  [92]  93  94  95  96  97  98  99  100  101  102  103  104  105  ...