Hi,

here is the condensed view of my first impressions of the new profiler

Profile.exe
- ll Line Level timing does not work (only method level timings displayed). When it does work after some runs it seems that
the source code view has wrong data and I am looking not event at the right method in the source view.

- Ants profiler extension should be added .app6results to enable it to open it in the UI /data:c:\profiled will generate a file which cannot
be openened in the UI

- Some really cool feature would be to integrate it with the Image File Execution Options for a specific process with command line argument
filtering.

E.g. I have a set of processes (currently about 25 in my case) from which I want to profile only one or two. They can be differentiated
by their command line. Since they start each other I need the Image File Excution Options to hook into the process creation.
profile /ife myProcess.exe /CmdLineContains "Backend"

An alternative would be to to simply enable the Image File Execution options via the command line. But beware
that there are different registry hives on 32 and 64 bit so one would need to specify if one wants to profile a 64bit or 32 bit application.

http://msdn.microsoft.com/en-us/library/a329t4ed(VS.71).aspx

// Enable profiling for all new processes now
profile /ll /sp /data:c:\profiled.app6results /t 30 /ife MyProcess.exe

// Disable profiling of further processes
profile /ife MyProcess.exe /clear

The tricky thing is that the output file name could now be locked because more than one process will be started. You could solve
this by appending the pid for each profiled process. Bonus points for you if the different profiler results could be merged into
one view.


Ants Profiler UI

- The Thread stack should have the owning process as parent (with pid) to be able to differentiate which process it was

- The performance counters should have the pid added to their names to be able to differentiate which process it was.

- The method grid should have a column process to filter for a specific process

- I do not see in the UI any way see the timings of my child processes

- The UI has no close Profiling Session Menu. This will result in IOExceptions because the file cannot be written to when I start the
next profiling session. The -f force option does not help here.

- When the the source file cannot be found I would like to simply choose a different drive letter instead of typing the whole path
manually. Normally the path is the same but the drive on where the sources were built can be different.

All in all very promising but the multi process support is still very whacky. To make it really usable in a multi process start scenario there is still some work left.

Yours,
Alois Kraus
akraus1
0

Comments

1 comment

  • Andrew H
    Hi,

    Thanks for the feedback! I'll add your suggestions to our bug tracking system.

    As far as I can see, the line-level timing option is working in the command-line tool. However, the information isn't included in any of the reports it can generate except for the app6results data file.

    Your description makes it sound like the profiler is finding either the wrong PDB file or the wrong source file. PDB files are matched against the running executable so ANTS can't show results if it's out of date. Source files aren't matched in this way, so if the locations specified in the PDB file have been changed since the file was created, the lines won't match up.

    When the profiler is showing results for multiple processes, they should show up in the threads drop-down in the UI (threads will be grouped by process). If only threads are showing up there, then the profiler only profiled a single process. If child processes aren't being profiled when the option is turned on, then it's possible that the profiler environment variables aren't being passed through to the child processes (the important ones are COR_PROFILER, COR_ENABLE_PROFILING and ANTS_PROCESS_GROUP). This is necessary due to the way .NET profiling works.
    Andrew H
    0

Add comment

Please sign in to leave a comment.