2. Who am I? Specialize in providing project teams with the necessary frameworks and personnel during the critical early stages of the project. shaun.wilde@commonvision.com.au shaun_wilde@hotmail.com @scubamunki Email: Email: Twitter:
3. CoverageEye.NET Originally hosted on GotDotNet PartCover Originally hosted on SourceForge Forked to GitHub https://github.com/sawilde/partcover.net4 OpenCover Hosted on GitHub https://github.com/sawilde/opencover How did I get here?
4. Profilers: What are they good for? Quick review of some commercial and open source .NET profilers Overview of the profiler API Code and Demos Basics of IL rewriting Code and Demos II Introducing new classes and methods Code and Demos III Extras (If time permits) .NET Profilers aren’t (that) scary
7. Get the names and signatures of classes and methods Read the IL for methods (functions) Memory allocations Types Garbage Collection Call graphs Interrogate the runtime
8. Dynamically create new classes and methods Rewrite the IL of existing methods Allocate memory Work with the GC Interact with the runtime
9. Commercial Redgate ANTS NCover(was originally Open Source) JetBrainsdotCover/dotTrace CLRProfiler4 (Microsoft with Source Code) Commercial and Open Source Profilers* (*Obviously this list is not complete)
10. Open Source Nprof http://code.google.com/p/nprof/ SlimTune http://code.google.com/p/slimtune/ PartCover https://github.com/sawilde/partcover.net4 OpenCover https://github.com/sawilde/opencover Commercial and Open Source Profilers* (*Obviously this list is not complete)
13. In-process COM object i.e. a DLL Native code i.e. unmanaged code Free threaded i.e. the developer is responsible for any required synchronisation 32/64 bit Like for like Implementation
59. Try/Catch Code in handler block is called if an exception of the type expected is thrown from code that is contained in the try block. (needs rewording) COR_ILEXCEPTION_CLAUSE_NONE
61. Try/Finally Code in handler block always called regardless of how the associated try block is exited. COR_ILEXCEPTION_CLAUSE_FINALLY
62. Try/Fault Code in handler block is only called if an exception has occurred in the corresponding try block. The exception continues on… IL Only? COR_ILEXCEPTION_CLAUSE_FAULT
63. A Mystery // duplicated clause.. this clause was duplicated down to a funclet which was pulled out of line COR_ILEXCEPTION_CLAUSE_DUPLICATED
64.
65. The Method Body Operations Branches The Stack Debug vs. Release The Method Body
66. Contains all the information needed to interpret and write IL Canonical Name String Name Stack Behaviour Parameter Size Length Bytes Control Flow OPCODE.DEF