Building a .NET Cross Platform Profiler (In an Hour)

Building a .NET Cross Platform Profiler (In an Hour)

Click to edit Master title style Building a .NET Cross Platform Profiler (in an hour) Pavel Yosifovich @ z o d i a c o n 1 ClickAbout to Me edit Master title style • Developer, Trainer, Author and Speaker • Book author • “Windows Kernel Programming” (2019) • “Windows Internals 7th edition, Part 1” (co-author, 2017) • “Windows 10 System Programming” (WIP) • Pluralsight author • Author of several open-source tools (http://github.com/zodiacon) • Blogs: http://blogs.microsoft.co.il/pavely, http://scorpiosoftware.net 2 2 ClickAgenda to edit Master title style • Overview • Profiler Architecture • Loading a Profiler • Implementing a Profiler • Summary 3 3 ClickOverview to edit Master title style • The .NET CLR supports loading an instrumentation profiler • COM class implemented in C++ and hosted in a DLL • Windows only • The .NET Core CoreCLR supports the same model • With the same interfaces • Windows / Linux / MacOS • We’ll built a simple, yet functional, profiler 4 4 ClickProfiler to Basics edit Master title style OS (Windows / Linux / MacOS) .NET Core (Profiled) Process CoreCLR .NET Core Profiler DLL Log IPC Event Aggregator / Logger / UI 5 5 ClickLoading to aedit Profiler Master titleCLR style Load DLL pointed to by CORECLR_PROFILER_PATH_64 Environment Variable Call DllGetClassObject with CLSID from CORECLR_PROFILER Environment Variable Call IClassFactory::CreateInstance Call ICorProfilerCallback::Initialize Profiler is ready 6 6 ClickThe Profilerto edit andMaster COM title style • A profiler is not loaded by calling CoCreateInstance • Requires a threading model to be set • COM is a Windows technology • For non-Windows platforms, Microsoft created the Platform Adaptation Layer (PAL) • Insulates the profiler developer from platform differences as far as COM and CLR are concerned • The PAL is currently bundled with the CoreCLR source code itself 7 7 ClickProject to Structureedit Master and title Build style • Using CMake • CoreCLR uses CMake as its build system • VS support for CMake is not good enough (IMHO) • Using MSBuild • Shared items project holds majority of code • Specific projects for Windows and Linux • Compiler for Linux • Use Clang (not gcc) • Supports some Microsoft extensions 8 8 ClickTesting to edit Master title style • Set up environment variables • Launch application • Linux testing options (assuming developing on Windows) • Deploy and run on a Linux VM • Use the Windows Subsystem for Linux (WSL) • Requires windows 10 version 1607 and later 9 9 ClickEnvironment to edit MasterVariables title style • CORECLR_ENABLE_PROFILING=1 • CORECLR_PROFILER={ProfilerGuid} • CORECLR_PROFILER_PATH_64={64bitProfilerPath} • CORECLR_PROFILER_PATH_32={32bitProfilerPath} 1010 Click to edit Master title style Code! 1111 ClickSummary to edit Master title style • .NET Core is cross-platform • So is a .NET Core profiler • Use of PAL and standard C++ can help cope with platform differences • Profiling is just one part of the job • The other is actually making good use of the gathered data 1212 ClickResources to edit Master title style • CLR Profiler samples on Github • David Broman’s CLR Profiling Blog • Old CLR Profiler on Github 1313 Click to edit Master title style Q&A Thank You! 14.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    14 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us