Blog » Debugowanie w SharePoint 2010

Debugowanie w SharePoint 2010

 
Debugowanie w SharePoint 2010
Sposób debugowania zmienił się diametralnie w najnowszej wersji SharePointa głównie za przyczyną tego, że w końcu wystarczy wcisnąć F5 i patrzeć jak się wykonuje kod. To jednak nie wszystko co jest do dyspozycji w temacie kontroli kodu w trakcie wykonywania.

Nowością w 2010 jest tzw.: Developer Dashboard , który podaje wiele informacji  dotyczących wykonującego się kodu. Nie jest on jednak aktywny domyślnie.
Aby włączyć Developer Dashboard możemy posłużyć się: PowerShellem, STSADM lub SharePoint API. Nie zależnie od metody, którą wybierzemy w celu jego włączenia/wyłączenia zawsze będziemy mogli ustawić dla niego następujące właściwości:
 
- On - włączony i pokazuje się zawsze u dołu każdej strony
 
- Off - wyłączony
   
- OnDemand - włączony ale aby pokazał się na stronie trzeba kliknąć ikonkę w prawym górnym rogu strony
W takim razie gdy wiemy już jak to wygląda należy wybrać jeden ze sposobów i po prostu go włączyć:

- PowerShell (z poziomu konsoli SharePoint 2010 Management Shell)
    
    UWAGA !!!
    Wiele źródeł podaje, że powinno się wpisać następującą komendę:
    
  (Get-SPFarm).PerformanceMonitor.DeveloperDashBoardLevel = "OnDemand"
    
    Jednak nie działa ona w ostatecznej wersji SharePoint. Aby włączyć Developer Dashboard należy użyć komendy:
   
[Microsoft.SharePoint.Administration.SPWebService]:: ContentService.DeveloperDashboardSettings.DisplayLevel = 'OnDemand';
[Microsoft.SharePoint.Administration.SPWebService]:: ContentService.DeveloperDashboardSettings.Update();

    

- STSADM (z poziomu linii komend należy wykonać następującą instrukcję)
    
    Stsadm -o setproperty -pn developer-dashboard -pv OnDemand
    

- SharePoint API (z poziomu kodu C# - można np.: napisać funkcję, która by pokazywała Dashboard Developer)
    
SPFarm farm = SPFarm.Local;
farm.PerformanceMonitor.DeveloperDashboardLevel = SPPerformanceMonitoringLevel.OnDemand;
farm.PerformanceMonitor.Update();


Dodatkowo dla Dashboard Developer można włączyć Trace. Robi się to np.: z PowelShella w następujący sposób:

[Microsoft.SharePoint.Administration.SPWebService]:: ContentService.DeveloperDashboardSettings.TraceEnabled = $true;
[Microsoft.SharePoint.Administration.SPWebService]:: ContentService.DeveloperDashboardSettings.Update();


Po wykonaniu tych poleceń u dołu widoczny jest link:
Po kliknięciu tego linku pokazuje się pod Developer Dashboard standardowy Trace z ASP.NET
Gdy już mamy włączony Dashboard developer warto prześledzić grupy parametrów, które są w nim wyświetlane:

1. Web Server - Parę ogólnych informacji na temat strony. Na szczególną uwagę zasługuje parametr "Log Correlaction Id" ale o nim trochę później.


 
2. Asserts and Criticals Events - wyjątki i błędy, które wystąpiły podczas ładowania strony. Można w to miejsce wpisywać również swoje. Robi się to poprzez skorzystanie z statycznej klasy SPCriticalTraceCounter:
   
    SPCriticalTraceCounter.AddDataToScope(1234, “Moja kategoria”, 1, “Komunikat błędu”);
   
    gdzie:
    1234 - dowolny identyfikator błędu (będzie stanowił link do podglądu całego błędu z Callstack),
    "Moja kategoria" - dowolna nazwa, będzie wyświetlana obok identyfikatora oraz we wszystkich komunikatach o błędzie,
    1 - identyfikator błędu, do wyboru z:
   
        1 Critical
        4 Exception (Watson)
        6 Assert
        8 Warning
        10 Unexpected
        15 Monitorable
       
    "Komunikat błędu" - reszta komunikatu o błędzie, wyjątku.
   
    Efekt wykonania kodu z podaną komendą skutkuje pokazaniem się następującego komunikatu
Po kliknięciu w identyfikator otworzy się nowe okno z pełną informacją o błędzie lub wyjątku:
3. Database Queries - Zapytania jakie zostały wykonane podczas ładowania strony. Aby zobaczyć całość zapytania należy kliknąć w nazwę - zapytanie w języku SQL.
4. Service Calls - wyświetla połączenia do serwisów WCF.
5. SPRequest Allocations - Liczba obiektów SPSite i SPWeb zaalokowanych w pamięci.
6. WebPart Events Offsets.
7. Inne - Metody poddane kontroli czasu wykonywania.
Jeśli chcemy aby również w niektórych miejscach w naszym kodzie również był mierzony czas wykonywania wystarczy umieścić ten kod w znacznikach:
   
using (new SPMonitoredScope("Mój webpart"))
{
    //….
}


UWAGA !!!
Niestety nie działa to w Sandboxed Solutions.

W nowej wersji SharePointa do każdego błędu dołączony jest parametr tzw.: Correlaction Id. Ma to pomóc w łatwiejszym wyszukiwaniu i interpretowaniu błędów. Ten parametr zawsze jest w formacie guida (ab961971-84fa-45c7… itp). Można go zobaczyć na stronie z błędem, Developer Dashboard w sekcji Web Server i w innych miejscach.
Dlatego jeśli użytkownikowi wyskoczy błąd to wystarczy jak prześle Correlaction Id, które zostało mu wyświetlone. Ten parametr przypisywany jest też każdemu wpisowi w plikach logów w katalogu …\14\Logs\. Aby łatwiej było przeglądać te pliki warto wykorzystać narzędzie ULSViewer (dostępny do ściągnięcia pod adresem: http://code.msdn.microsoft.com/ULSViewer):
 
 
lub wykorzystać Excela.


Warto zobaczyć:
   
Zagnieżdżanie znaczników SPMonitoredScope
http://blog.mastykarz.nl/developer-dashboard-monitoring-performance-solutions/
 


Dodany: 2010-08-04 20:28:15 przez Michał Nikołajuk | Wypowiedzi: 0
Dodaj do Yahoo Bookmarks Dodaj do Facebook Dodaj do Twitter Dodaj do Live Dodaj do Yahoo MyWeb Dodaj do MySpace Dodaj do Google Bookmarks
Komentarze
Wpis nie posiada komentarzy.
Zostaw komentarz Subskrybuj



 Security code