I am trying to profile CPU time in an ASP.NET application (running locally) using xperf.
So far, I have followed the standard procedure:
- Run
cmd
as administrator xperf -on base
- Do some things in a web application.
xperf -d mylog.etl
xperfview mylog.etl
- Trace → Download Characters
- Summary table
At this moment, I see call reports for unmanaged code.
What do I need to do to see the same for my .NET assembly? Is it possible?
I have a path to my PDB in _NT_SYMBOL_PATH
, and at least I know that MS characters are loading.
I saw this question , but it does not have a solution. According to this answer ,
You need the xperf version from the Windows 8 SDK. This version supports .net. Start tracing with the new Performance Recorder user interface and this tool generates PDBs for ngened.net components so that xperfview and WPA can decode the column.
Can anyone confirm this? I am using the Windows 7 and Windows 7 SDK. I am skeptical about installing another SDK platform.
UPDATE . Yes, the Windows 8 SDK runs on Windows 7, and for this purpose you only need the Performance Toolkit. In fact, you don’t even need to use the new “Windows performance analyzer” because the etl
files created by the new “Windows performance recorder” will still work with xperfview
, including extended stack traces. See Comments on the accepted answer for further notes.
harpo source share