How can we help you today? How can we help you today?
Bart Read
Hi Paul, Thanks for this! That's certainly helped. Here's what I think is going on: 1) Here you click on NewQuestions and inspect the line level timings. You can navigate to jazzQuestions(filename), but not jazzQuestions(), but if you look in the source code view, you can see that jazzQuestions() has no hit count, and no line level timing. This suggests that either it has never been executed, or that it was not profiled because it falls into the category of trivial functions. Even if the latter were the case I'd still expect to see a line level timing for it, unless it was executed only once, or only once within each 250ms data chunk collected by the profiler. You can verify whether or not this is the case by going to Tools > Options, and unchecking "Avoid profiling extremely trivial functions", but be warned, this will increase the amount of memory the profiler uses, so I'd turn it off again later. If you find that timing information is included for this line, and hopefully you'll then be able to navigate to jazzQuestions(), then it's being excluded, otherwise it's not being executed. EDIT: I've just rewatched this and noticed that the hit count for the 'IF filename = ""' statement on line 429 is only 1, so NewQuestions is only being executed once, which means that jazzQuestions() definitely isn't being executed. Now, clicking on jazzQuestions(filename) takes you to the first member variable initialisation, and not the constructor itself. This is because we don't have a proper model of the code, but we do know what's executed, and using the PDB file we can map back onto the source code. Since these initialisations are executed as part of the jazzQuestions(filename) call (note the presence of line level timings), and in fact are executed before the body of this call, you are taken to the first member variable initialisation. The same applies when you click on the constructor in the tree view. 2) Clicking on the constructor for the Question class. Again, the same thing applies with member variable initialisations. It's a little odd, but these are executed before the body of the constructor, and effectively form part of the constructor call. You'd see this clearly if you stepped through the code with a debugger. Hope that clears everything up, and thanks for posting the video: it made it much easier for me to see what was happening. If you need anything else, let me know. Thanks, Bart / comments
Hi Paul, Thanks for this! That's certainly helped. Here's what I think is going on: 1) Here you click on NewQuestions and inspect the line level timings. You can navigate to jazzQuestions(filename)...
0 votes
Hi Paul, Thanks for getting in touch. ANTS Profiler will only provide click navigation in the source code view for methods that were executed. This is because to provide click navigation for all methods would require a complete model of the code being executed, which we don't construct since it would impede performance and increase the profiler overhead. I suspect therefore, the reason that you're not seeing a hyperlink for the no-args constructor is that it wasn't executed in the NewQuestions method. As for why it's taking you to line 13, I suspect this is because this probably was the first line of code that was executed during that constructor call. Static variables are initialised the first time a class is used, so I'm assuming this is what happened here. Similarly, member variables that are initialised outside of a constructor are also collapsed into the constructor call for execution purposes (note the way the VS debugger steps through these initialisations before stepping into a constructor body). Obviously this isn't made entirely clear, however it's difficult to determine what the correct behaviour should be since a class or instance level initialisation outside of a constructor could be very expensive. Also, I suspect the lack of a complete code model may possibly limit what we can do here. At any rate I'll add this to the list of things we can look into improving. Hope that's useful information. Thanks, Bart / comments
Hi Paul, Thanks for getting in touch. ANTS Profiler will only provide click navigation in the source code view for methods that were executed. This is because to provide click navigation for all me...
0 votes
Hi Chris, OK, sorry about this, it looks like the installer didn't register the new DLL properly. This might do the trick (I'm assuming you're running 32-bit Windows XP). Open up a command prompt. Navigate to the ANTS Profiler installation directory, which is probably something like "C:\Program Files\Red Gate\ANTS Profiler 4" using the following: cd "C:\Program Files\Red Gate\ANTS Profiler 4" Now, execute the following command: regsvr32 ProfilerCore.dll That should register the correct version of the ProfilerCore DLL. You should then be able to run ANTS Profiler. If you're running 64-bit Windows , it's slightly more involved. Open up a 64-bit command prompt, and as before change to the ANTS Profiler installation directory. You need to register both the 32- and 64-bit profiler cores, so once you're in the right directory first register the 32-bit DLL using: C:\Windows\SysWOW64\regsvr32.exe ProfilerCore.dll Now cd into the x64 subdirectory and register the 64-bit DLL using: regsvr32 ProfilerCore.dll If that doesn't work then (i) Completely uninstall ANTS Profiler 4.1 using "Add/Remove Programs" in Control Panel (I think it's is called "Programs and Features" on Vista). (ii) Re-install ANTS Profiler 4.1 using the installer you downloaded earlier for build 4.1.0.11. If you're still not getting any joy please let me know and I'll look into it further. Thanks, Bart / comments
Hi Chris, OK, sorry about this, it looks like the installer didn't register the new DLL properly. This might do the trick (I'm assuming you're running 32-bit Windows XP). Open up a command prompt. ...
0 votes
Hi Chris, Sorry to see you're having problems. I've spent some time today looking at this problem, and I've managed to apply a fix that should sort it out for you. The downside is that we're just now migrating version control systems so I won't be able to get you a patch until the new version control system is integrated with our build service. We'll also need to check the upgrade routes all work in the installer. Things are a little chaotic at the moment because a number of key people involved in the project are taking chunks of well earned holiday, including me in a couple of weeks, however we'll try to get something sorted out for you as quickly as we can. Don't worry about your trial period expiring; we can sort that out as well. Just in case it's helpful, as far as I can tell the issue can be caused by one of the following scenarios: - High CPU load causing a COM+ server to take an excessively long time to start up. - Having a debugger attached to the COM+ server, with execution paused - A bug in a COM+ server that prevents it registering itself properly. - Incorrect registration/configuration of a COM+ server. - Some other reason (yeah, I know, it's lame) that isn't listed above--I'm no COM+ expert. I'm assuming you're probably not trying to profile a COM+ server, so this'll be just something that's installed on your machine by another application, so it may not be something you're in a position to do anything about. At any rate, failures such as these are things we're going to have to deal with, although unfortunately until something like this happens you've often no idea that this kind of thing could cause a problem, given the vast number of other scenarios we have to test. I'll let you know when the patch becomes available. Thanks, Bart / comments
Hi Chris, Sorry to see you're having problems. I've spent some time today looking at this problem, and I've managed to apply a fix that should sort it out for you. The downside is that we're just n...
0 votes