Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 4개 있습니다.)

마이크로소프트의 CoreCLR 프로파일러 예제 빌드 방법 - 리눅스 환경

예전에 윈도우 환경에서 프로파일러 예제를 빌드하는 방법에 대해 소개한 적이 있는데요.

마이크로소프트의 CoreCLR 프로파일러 예제 빌드 방법
; https://www.sysnet.pe.kr/2/0/11294

이번에는 리눅스(우분투) 환경으로 다뤄보겠습니다. ^^ 이를 위해 기본적으로 git, clang 구성 요소를 설치하고,

$sudo apt install git clang

CoreCLR 소스코드(헤더 파일)가 필요하기 때문에 dotnet/coreclr repo를 로컬에 다운로드합니다. (빌드할 필요는 없습니다.)

$git clone https://github.com/dotnet/coreclr.git

이제 프로파일러 예제를 clone합니다.

Microsoft/clr-samples 
; https://github.com/Microsoft/clr-samples
; https://github.com/Microsoft/clr-samples/tree/master/ProfilingAPI/ReJITEnterLeaveHooks

$git clone http://github.com/Microsoft/clr-samples
$cd clr-samples/ProfilingAPI/ReJITEnterLeaveHooks

마지막으로 다음과 같이 환경 변수 설정을 하고 build.sh 파일을 실행해 주면 끝!

$export CORECLR_PATH=~/coreclr
$export BuildOS=Linux
$export BuildArch=x64
$export BuildType=Debug
$export Output=CorProfiler.so

$./build.sh




빌드는 완료되었고 생성된 CorProfiler.so를 테스트해야죠. ^^ 이를 위해 CorProfiler.so를 로드하도록 다음과 같이 환경 설정을 하고,

$export CORECLR_PROFILER={cf0d821e-299b-5307-a3d8-b283c03916dd}
$export CORECLR_ENABLE_PROFILING=1
$export CORECLR_PROFILER_PATH=~/clr-samples/ProfilingAPI/ReJITEnterLeaveHooks/CorProfiler.so

(아무거나 예제 프로젝트를 만들어) 닷넷 프로세스를 실행합니다.

$dotnet webapp.dll

실행하자마자 Enter/Leave 로그가 무수히 많이 찍히는 것으로 CorProfiler.so 파일이 정상적으로 올라온 것을 확인할 수 있습니다. 또한, dotnet 프로세스의 id를 알면 다음과 같이 프로세스에 로드된 모듈을 열람할 수 있습니다.

// lsof (List Open Files)

$ lsof -p 20007 | grep Pro
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/121/gvfs
      Output information may be incomplete.
dotnet  20007 testusr  mem  REG  8,1   117536  405697 ~/clr-samples/ProfilingAPI/ReJITEnterLeaveHooks/CorProfiler.so
dotnet  20007 testusr   35r REG  8,1    17904 1989716 ~/coreapp/Microsoft.Extensions.FileProviders.Abstractions.dll
dotnet  20007 testusr   65r REG  8,1    31216 1989719 ~/coreapp/Microsoft.Extensions.FileProviders.Physical.dll
dotnet  20007 testusr  155r REG  8,1   151024 1989623 ~/coreapp/Microsoft.AspNetCore.DataProtection.dll
dotnet  20007 testusr  162r REG  8,1    23544 1989621 ~/coreapp/Microsoft.AspNetCore.DataProtection.Abstractions.dll
dotnet  20007 testusr  201r REG  8,1    17392 1989717 ~/coreapp/Microsoft.Extensions.FileProviders.Composite.dll




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

[연관 글]






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

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

비밀번호

댓글 작성자
 



2019-03-26 12시13분
마이크로소프트의 CoreCLR 프로파일러 리눅스 예제를 Visual Studio F5 원격 디버깅하는 방법
; http://www.sysnet.pe.kr/2/0/11856
정성태

... 106  107  108  109  110  111  112  113  114  115  116  [117]  118  119  120  ...
NoWriterDateCnt.TitleFile(s)
11106정성태11/8/201630273.NET Framework: 623. C# - PeerFinder를 이용한 Wi-Fi Direct 데이터 통신 예제 [2]파일 다운로드1
11105정성태11/8/201625587.NET Framework: 622. PeerFinder Wi-Fi Direct 통신 시 Read/Write/Dispose 문제
11104정성태11/8/201623653개발 환경 구성: 305. PeerFinder로 Wi-Fi Direct 연결 시 방화벽 문제
11103정성태11/8/201624702오류 유형: 370. PeerFinder.ConnectAsync의 결과 값인 Task.Result를 호출할 때 System.AggregateException 예외 발생
11102정성태11/8/201625062오류 유형: 369. PeerFinder.FindAllPeersAsync 호출 시 System.UnauthorizedAccessException 예외 발생
11101정성태11/8/201626237.NET Framework: 621. 닷넷 프로파일러의 오류 코드 - 0x80131363
11100정성태11/7/201635002개발 환경 구성: 304. Wi-Fi Direct 지원 여부 확인 방법 [1]
11099정성태11/7/201636407.NET Framework: 620. C#에서 C/C++ 함수로 콜백 함수를 전달하는 예제 코드파일 다운로드1
11098정성태11/7/201625650오류 유형: 368. 빌드 이벤트에서 robocopy 사용 시 $(TargetDir) 매크로를 지정하는 경우 오류 발생
11097정성태11/7/201627985오류 유형: 367. go install: no install location for directory [...경로...] outside GOPATH
11096정성태11/6/201631093디버깅 기술: 83. PDB 파일을 수동으로 다운로드하는 방법
11095정성태11/6/201628689.NET Framework: 619. C# - Cognitive Services 중의 하나인 Face API를 사용해 얼굴 인식 및 흐림(blur) 효과 적용 [1]파일 다운로드1
11094정성태11/5/201629677VC++: 105. Visual Studio 2013/2015 - Ceemple OpenCV 확장을 이용한 웹캠 영상 출력
11093정성태11/4/201630000웹: 34. Edge 브라우저도 지원하는 클립보드 복사를 위한 자바스크립트 코드
11092정성태11/3/201637315.NET Framework: 618. C# - NAudio를 이용한 MP3 파일 재생 [5]파일 다운로드1
11091정성태11/3/201629759VC++: 104. std::call_once를 이용해 thread-safe한 Singleton 객체 생성파일 다운로드1
11090정성태11/1/201631423VC++: 103. C++ CreateTimerQueue, CreateTimerQueueTimer 예제 코드 [9]파일 다운로드1
11089정성태11/1/201632308디버깅 기술: 82. Windows 10을 위한 Symbol(PDB) 파일 내려받는 방법 [2]
11088정성태11/1/201634080.NET Framework: 617. C# - AForge.NET을 이용한 MP4 동영상 파일 재생 [7]파일 다운로드1
11087정성태11/1/201628561.NET Framework: 616. AForge.Video.FFMPEG를 최신 버전의 ffmpeg 파일로 의존성을 변경하는 방법파일 다운로드1
11086정성태11/1/201623178오류 유형: 366. The Microsoft Passport Container service terminated with the following error: General access denied error
11085정성태10/27/201638651.NET Framework: 615. C# - AForge.NET을 이용한 웹캠 영상 출력 [2]파일 다운로드1
11084정성태10/26/201626209오류 유형: 365. The User Profile Service service failed to the sign-in.
11083정성태10/26/201632761Windows: 131. 윈도우 10에서 사라진 "Adapters and Bindings" 네트워크 우선 순위 조정 기능 [1]
11082정성태10/26/201636066.NET Framework: 614. C# - DateTime.Ticks의 정밀도 [4]파일 다운로드1
11081정성태10/26/201625002오류 유형: 364. You need to fix your Microsoft Account for apps on your other devices to be able to launch apps and continue experiences on this device.
... 106  107  108  109  110  111  112  113  114  115  116  [117]  118  119  120  ...