We are new to creating azure/cloud applications and we are currently using the 1.4 august release of the azure sdk. I was hoping if anyone can help me out on its profiling features.
First, I have a website on cloud and currently using profiling for it (CPU Sampling). I can get the reports but the problem is that the report can't get the specific functions from one of our DLLs. I've already included the microsoft symbols in the options
plus I've copied the project's DLLs and pdb files to the cached symbols but I can't make it to work. Additional information: does it has something to do with the dll/project class being a singleton?
Second, does the VS profiler can profile facebook apps (both none Azure and Azure apps)? When I generate a report for this project I don't see any of the projects functions.
Hope somebody can help me. Thanks. Using Microsoft Visual Studio 2010 Ultimate SP1 Rel, .Net Framework 4.0 SP1 Rel, MVC 2, Azure SDK 1.4 August Release
Does it work for other DLLs or other functions in the same DLL?
The Profiling Tool doesn't care about whether the class is singleton or not. A function is not showed in the report may because that the function is called few (In the other words, the function is not using much CPU). To understand how profiling
tool works, please see
Understanding Sampling Data Values in Profiling Tools.
> Does the VS profiler can profile facebook apps (both none Azure and Azure apps)?
As far as I know, the Profiling Tools work for .NET application only. The profiling feature in Azure is based on The Visual Studio Profiling Tools. So if it is not an Azure application, you might directly use these tools in Visual Studio. Please see
Analyzing Application Performance by Using Profiling Tools.
Thats the only dll from my solution that doesnt appear in the report. The method name displayed is a hex value (eg 0x060000F4). The dll is an interface class between the web and the database. When ever I click the hex
value from the summary page, the page displays its caller, which is a named function from the web part and the functions it calls which are named methods as well.
I dont really know the problem here and I've also tried using the VSPerfReport and this doesn't produce a better report (all of the project dll is not recognized).
Regarding the Facebook App: We created a web app using MVC2 deployed it on the cloud and host it in facebook as a facebook app. Im also trying to produce performance report for this app but the reports that I get doesn't display methods from our application/dlls.
Visual Studio Team System FAQ (Why am I seeing function addresses instead of function names when I try to analyze a performance report?) states that you are not
resolving symbols correctly for your performance reports.
It provides several options for resolving issue. The last option is to go to Tools->Options->Debugger->Symbols and add a symbol file location (a directory path).
I already saw that page and followed its solution but I still can't make it work... Ill try to point a directory to the main solution and hopefully it would work. The thing is that its the only one that is not loaded or recognized by the report. I'll get
back on you after I point it to the main solution's folder. Thank you very much for your help. By the way I reposted the topic on the forum you've gave me, if youre interested : http://social.msdn.microsoft.com/Forums/en-US/vstsprofiler/thread/55d5b0ca-f538-4a10-bf26-acb9ed5564cc.
Hi, I did add a symbol pointer to the main solution folder and it still not working... I've noticed that most of the methods I see in the report came from the main web project (web role project). Am I missing something during the publishing to the cloud,
do I need to append the other project's dll or something? Additional question, I don't know if its a dumb one, can I profile an azure app using the cluod compute emulator?
The August 2011 Release of the Visual Studio Tools (1.4) has added Windows Azure profiling support , you may refer to the following articles
to check your steps profiling your applications while they are running live in the cloud.
Talking to profile an azure app using the cloud compute emulator, I tried to use Launch Performance Wizard to add a target project but it seems that it only support
web role or worker role project instead of windows azure project. And then the added project will be emulated in local ASP.NET development Server not in cloud compute emulator. So I am not sure that whether can profile an azure app using the cloud compute
In addition, there is a Microsoft tool NP .NET Profiler may help you. It can troubleshoot following types of .NET applications: Azure Cloud Service ASP.NET Web Applications .NET
Windows Applications (WCF, WPF) .NET Console Applications .NET Window Services .NET COM+ Components.
You can have a try. Also, the forums thread http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/78391eb1-357d-4431-8a4b-7f2ba80db205/
talks about this topic, by adding some code in your application to profile a worker role.
Thanks.Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Connie Ma Microsoft
Online Community Support
Thanks for the response. I'm feeling hopeless though about this problem. I already saw those links that you've given me but nothing helps. My main concern is profiling the method of a project which is referenced by the main web role, it acts as our interface
towards the database layer and most of the bottle neck (based on the reports) are coming from that project but the profiler doesnt show the method name that causes it. I'm feeling hopeless, my last option would be to rewrite my code so that the dblayer interface
would be a simple class inside the web role and see if it would be profiled.
In addtion, your web application is running in the azure while the system drive in azure VM is D:, that's why it is looking
for the dll in the D: drive.
Some of your failed information is "Failed to load symbols for E:".
In azure VM, E: drive contains the customer’s role code. So please add your own symbol file path to Visual Studio click tools -> options -> debugging also.
Hope this may help you.
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
Thanks for the response. I've configure the symbol path before, but it didn't work. (I'm thinking that it won't work cause the application is already in cloud rather than in debug mode, would it matter?)
What I did is to temporarily move the db layer interface project into a class on the main website project. This somehow solve my problem. The thing is that there are still functions that appears in hexadecimal values but I managed to get a decent result.
I'll try to figure things out along the way and post here if I manage to find something.
Glad to hear that you have found a workaround about this issue.
If you encounter other problems about profling using your new method, you are encouraged to create a new thread. We will be happy to help you about azure issues :)
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Connie Ma Microsoft
Online Community Support
I've encountered the same issues as Yno Yno, when attempting for profile an Azure role. I've followed the suggestion of setting the symbol paths in Visual Studio Debugging Options and still have encountered the same issues. Just to recap the issue
when profiling in Azure:
Profiling reports only show detailed information for the dll in which the Azure role entry point is defined. Any other referenced dll will only show limited information (for example, just that a particular interface was invoked, but not the details
of which implementation of that interface was invoked)
When loading the profiling report, the output in window in Visual Studio displays errors which indicate that it is not able to find any of the referenced dll's and their symbols.
The workaround stated above (moving all code into a single dll) is not a valid workaround. Any help with this issue would be greatly appreciated.
You can instrument referenced dlls using VSInstr.exe from Visual Studio Tools (make sure to pick up correct 32/64 bit based on your configuration) as part of the build process (if building from Visual Stduio, you can specify in Post Build event section of
project property to instrument it). This would ensure that profiling data is captured for your dll. Before downloading report, make sure that you have given path of pdbs files of your instrumented dlls in Symbol path in Visual Studio. This would ensure that
you are seeing function names rather than hex values.