Comments
Sort by recent activity
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. / comments
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 is...
We should have this bug fixed in version 6. The problem here is that ANTS is having difficulty determining which of your sites corresponds to the URL you've asked to profile. There's an issue with the error reporting code that causes a NullReferenceException to be thrown instead of the proper error.
It should be possible to work around this issue in most cases without affecting how your server works by reconfiguring it.
There are three main causes of this issue in ANTS 5:
Sites distinguished by IPv6 addresses instead of IPv4. The profiler currently treats all of these as the same. The solution is to assign IPv4 addresses and give them to the profiler instead.
Sites configured by hostname, with a default site with a blank hostname. The profiler currently will treat any of the sites with a specific hostname as ambiguous with the default one. Assigning a specific hostname to all of the sites will work around this issue.
Similarly, assigning a specific IP address to some sites and wildcards to others will give the profiler a problem. Giving all sites a specific address or all sites a wildcard address should work around this. / comments
We should have this bug fixed in version 6. The problem here is that ANTS is having difficulty determining which of your sites corresponds to the URL you've asked to profile. There's an issue with ...
You can click on any event in the timeline, including exceptions, to find the nearest stack trace to where it occurs - you might find that switching the profiler to showing 'all methods' instead of just 'methods with source' will get you more detail. / comments
You can click on any event in the timeline, including exceptions, to find the nearest stack trace to where it occurs - you might find that switching the profiler to showing 'all methods' instead of...
Hmm, it's possible that this crash is one that we've had some sporadic reports of but have never been able to reproduce here - on some systems trying to use the socket API causes the profiler to crash.
What kind of security software do you have installed on the machine that is exhibiting this issue - in particular anti-virus and firewall software?
Does forcing your application to run in 32-bit mode have any effect on the issue? / comments
Hmm, it's possible that this crash is one that we've had some sporadic reports of but have never been able to reproduce here - on some systems trying to use the socket API causes the profiler to cr...
On a 64-bit system, the profiler is unlikely to run out of memory, so this is probably a genuine memory corruption issue of some variety.
Some kinds of reflection interfere with the line-level timing code used by the profiler (in particular, adding methods or classes to assemblies that are already loaded instead of to temporary assemblies). Could you try profiling with line-level timings disabled to see if that solves the problem? / comments
On a 64-bit system, the profiler is unlikely to run out of memory, so this is probably a genuine memory corruption issue of some variety.
Some kinds of reflection interfere with the line-level timi...
Yes, to a certain extent.
You can use the Attach... option in Visual Studio to attach to the process you are profiling and debug it simultaneously. Note that the profiler won't be able to take snapshots while Visual Studio has suspended the process. / comments
Yes, to a certain extent.
You can use the Attach... option in Visual Studio to attach to the process you are profiling and debug it simultaneously. Note that the profiler won't be able to take snap...
From your description, it's most likely that your object is being kept in memory by a static variable - these are implemented as GC handle object arrays internally by the CLR.
The memory profiler can usually track these and work out which variable is involved, which hides this implementation detail. There are a few circumstances where this isn't possible, however.
Most commonly, this isn't possible for .NET 1.1 applications: the profiling API was less mature then and the information simply isn't available. The solution is to configure your application to run in .NET 2 while profiling.
For .NET 2 and later, there are some problems with the CLR that can result in the profiler failing to establish static variable values. The most common issue that we see is that an application has multiple AppDomains: a .NET limitation makes it dangerous to try to read static variables in assemblies that are loaded in more than one AppDomain so we avoid this wherever possible. / comments
From your description, it's most likely that your object is being kept in memory by a static variable - these are implemented as GC handle object arrays internally by the CLR.
The memory profiler c...
I believe this is another manifestation of the .NET bug that also results in ArgumentOutOfRangeExceptions - see http://www.red-gate.com/messageboard/vi ... php?t=9421 for a discussion.
The solution should be the same - follow the steps here http://support.microsoft.com/kb/911716 to switch your ASP.NET application to use workstation GC. / comments
I believe this is another manifestation of the .NET bug that also results in ArgumentOutOfRangeExceptions - see http://www.red-gate.com/messageboard/vi ... php?t=9421 for a discussion.
The solution...