I'm trying to profile an ASP.NET web service on my machine under IISExpress that has an execution stack of
c# for the entrance point to the web service, which calls
c++/cli middleware, which calls
native c++ for the bulk of the execution, which calls
c++/cli & c# for some extra plug-in services that provide a Data Access Layer to the native c++ layer
This is all written in Visual Studio 2019 (C# and C++)
I am trying to profile this in Visual Studio 2019 by running IISExpress and using the Analyze / Performance Profiler to attach to the running process.
I can run my program and execute a http request (exercising my execution stack) successfully, but the profiler will only show
iisexpress
[Unwalkable]
as the two function names that are executed.
Does anybody have experience with getting the Performance Profiler to provide good output in similar circumstances?
I'm also open to other profilers.
I experienced the same thing when trying to profile my desktop application. I had to run it in administrative mode. Then it worked as it should.
I'm getting a lot of value out of Microsoft's free PerfView https://github.com/microsoft/perfview/. Much more functional than any other profiler I tried.
Related
When we use Visual Studio 2013 for web development, we experience the following issues while debugging:
Web application takes a very long time to load
Client scripts take a long time to load
CPU usage by the IIS worker process increases enormously while debugging the application
Changing to a local IIS does not solve these problems.
What's going on here?
According to this site https://www.devexpress.com/Support/Center/Question/Details/T102322
In Microsoft Visual Studio 2013, the Browser Link feature was introduced. It provides dynamic exchange between IDE and any open browser on your machine. With the help of this feature, you can test changes in page markup in browsers on the fly, inspect HTML objects, etc. However, the use of this feature might cause abovementioned problems in the debugging process.
A common solution is to disable Browser Link in Visual Studio:
For me, this was happening because I use Resharper and have a big file oppened (30k lines). I just disable resharper for some specific files.
When I run command line application (executable generated using visual studio 2008) on non development windows 7 machine it gives following run time error "application has requested run time to terminate in unusual way. Please contact application support team for more information". It runs fine on a development machine.
With VS 2005 and VS 2008, Visual C++ used a side-by-side versioning scheme that requires manifest entries embeddded in the EXE to really work correctly in all cases. It's possible you are dealing with one of these. See these articles for details on debugging these side-by-side issues.
Diagnosing SideBySide failures
Part 1: Troubleshooting VC++ Side by Side Problems
Part 2: Troubleshooting VC++ Side by Side Problems
Note that with VS 2010 and later, Visual C++ no longer uses this side-by-side scheme. That said, there are still lots of reasons to use embedded manifests anyhow. See this article.
Do we have any alternative for intellitrace for visual studio 2012 professional version. It looks like Intellitrace is only available for Visual Studio 2012 Ultimate version.
Thanks
A few alternatives that I've used:
PerfView
Just amazing.. if the UI doesn't put you off, and you don't mind waiting an extra few minutes for the traces to be viewable. It contains the most used features of intellitrace: Exception Stacks, Threads, Processes, File Access, Registery Access, Network Access.
There are a few more ETW Tracers and viewers: Microsoft Message Analyzer, Windows Performance Analyzer, ....
Stackify Prefix or Glimpse
Very good for debugging problems with IIS. Runs on the server end as an IIS Http handler. Most used feature from these are: Application execution path, Exception stacks, request/response cycle with raw data.
I think profiling an application deployed to Azure is not a big deal http://msdn.microsoft.com/en-us/library/hh369930.aspx
I'd like to do the same locally, in the Compute Emulator. It looks like this is currently difficult http://www.pettijohn.com/2011/05/performance-testing-azure-dev-fabric.html at best, at least with the native VisualStudio 2010 profiler.
Am I missing a simple way to do this? Are there any third-party tools that make this fairly easy to do?
I'm using the Azure SDK 1.4 and Azure Tools for Visual Studio 2010 1.3
For later versions of the SDK you can refer to this article in the Windows Azure documentation, where it is explained how to do CPU sampling for both worker roles and web roles: for the latter case, you should attach to the WaIISHost.exe process.
As also indicated in the answer from Marcus Jansson, you may need to attach to the w3wp.exe process. For example, when I'm debugging one of the web sites contained in a web role I need to explicitly attach to the w3wp.exe process that is hosting that site, since Visual Studio does not attach automatically to all relevant IIS instances.
UPDATE 2013-01-10 19:03 UTC I was unable to profile web roles using the linked instructions. I discovered that:
it is useless to attach to WaIISHost.exe, since it seems that it doesn't contain the role code;
I cannot attach to w3wp.exe instances from Visual Studio 2010 (I receive an error message with code VSP1449).
Since I'm using Windows Azure SDK 1.8, I then tried to run my web role under IIS Express (see this post for further details) and then I attached to the iisexpress.exe process. This way I was able to profile my web site.
If you run the web role in IIS, you can just attach to the process w3wp.exe.
I think it depends on what you're trying to profile.
The link you included in your question is for profiling memory for a web role, and yes it looks a little involved.
If you're looking to profile a worker role, it's much easier. You can simply start the worker role through Visual Studio (or using the method mentioned in the post you linked to if you're worried about the effect of the debugger on the profiling) and select Analyze -> Profiler Attach/Detach -> WaWorkerHost. From there it should look just like profiling any other application.
I am having a service which calls a C++ COM dll. The C++ COM dll causes some problem and the service crashes.
I couldn't figure it at what point the service crash. I used debugdiag. But it is not putting any crash dump.
Kindly let me know how I can debug a application crash. Or direct me to some good tutorials and tools.
Many thanks.
Attach the Visual Studio debugger to your service via Tools / Attach to process. You might need to check Show processes from all users in order to see your service in the list.