Skip to main content

Posts

Showing posts with the label debug

Windows 8 Metro App - How to debug JS that was loaded at runtime

In the last period of time I had to work a lot with JavaScript and not for the UI, but for an entire Metro application on Windows 8. One of the nice features of JavaScript is the ability to access any kind of function and defining or overriding functions at runtime. This feature is very powerful but also can create a lot of mess. In this moment if we would try to write a C# Metro Application we would not have the ability to load at runtime any kind of assembly or code. The “reflection” part on the .NET framework for Metro Application is not the one that we know from the normal .NET. In JavaScript if we have a script like this: (function(){ “use strict” WinJS.Namespace.define(“MyClass”,{ doSomeAction: function(){ console.warn(“doSomeAction was called”); } }); })(); we could evaluate the script at runtime and call or instanced the object and functions that were defined. The first step is to evaluate the script. Let assume that the definition of this script can be foun...

Serie de turoriale despre debug in Visual Studio

Mai jos puteti sa gasiti link-uri spre o lista de posturi personale despre cum putem sa facem debug in Visual Studio: Base Visual Studio debugging functionalities Debugging multithreaded applications in Visual Studio Some cool stuff debugging with Debugger Canvas New debugging functionalities in Visual Studio 2012 Visual Studio debugging tips and tricks Daca aveti si alte propuneri, va rog sa imi lasati un comment.

Visual Studio debugging tips and tricks

Continui seria de posturi ( 1 , 2 , 3 , 4 ) despre debug cu un post despre tips and tricks. Daca in posturile precedente am vorbit despre cum se face debug in Visual Studio in functie de diferite cazuri, astazi vreau sa va prezint cateva tips and tricks din aceata zona. Make Object Id Prin acesta functionalitate putem sa facem tracking la un obiect chiar daca am iesit in afara blocului unde a fost declarat. Trebuie sa mentionez ca acest lucru se poate face doar cu reference type. Din fereastra de "Watch" trebuie sa dati click pe variabila pe care o aveti deja adaugata si sa selectati "Make Object ID". In urma acestei actiuni. In urma acestei actiuni o sa observati ca apare o noua variabile cu un nume de genul #1, iar valoarea o sa fie terminata cu "{1#}". Si dupa iesirea din blocul unde erau declarate si folosite, acestea o sa ramana in continuare active. Immediate Windows Aceasta fereastra poate sa fie extrem de utila cand este nevoie sa verificam...

New debugging functionalities in Visual Studio 2012

Continui seria de posturi ( 1 , 2 , 3 ) cu noile functionalitati de debug din Visual Studio 2012. In acest post o sa vorbim despre ce a adus nou Visual Studio 2012 pe partea de debug. In cazul in care lucrati cu aplicatii web in noul Visual Studio o sa vedeti ca langa butonul de Debug a aparut o lista cu browerele sub care doriti sa rulati aplicatia. Acest feature este destul de util, mai ales ca nu mai este nevoie sa ne instalam tot felul de plugin-uri care faceau acest lucru.  Tot acest buton ne permite sa rulam sa pornim cu un sigur click aplicatia noastra in mai multe browsere. Pentru acest lucru este nevoie sa dati click pe "Browse With...". In aceasta locatie puteti selectati mai multe browesere pe care sa le setati ca default. In cazul in care doriti puteti seta si dimensiunea ferestrei. O alta noua functionalitate este pe partea de profiling, care ne permite sa identificam zonele de cod lente. Aceasta suporta in momentul de fata si Metro Applications. Partea de ...

Some cool stuff debugging with Debugger Canvas

Continui seria de posturi ( 1 , 2 ) despre cum sa facem debug in Visual Studio cu un post dedicat Debugger Canvas. Cati dintre voi ati apucat sa o folositi intr-un mediu real? Mai mult ca sigur v-ati jucat cu ea, dar ati reusit sa o folositi mereu? Eu va spun sincer ca nu. Sunt cazuri cand poate sa fie foarte utila, dar in unele situatii, cand vrem sa facem un debug simplu e mult prea complexa. Acesta este un tool free, care poate sa instalat in Visual Studio. Il puteti download din urmatoarea locatie http://download.microsoft.com/download/5/A/7/5A7FB2E7-5720-4739-BDDE-28A684C5B291/Microsoft.DebuggerCanvas.vsix si daca ma intrebati pe mine, este unul din tool-urile care nu poate sa lipseasca din Visual Studio. Cand mi se pare extrem de utila? In momentul in care este nevoie sa facem debug intr-un mediu cu multe thread-uri care ruleaza simultan sau cand avem parte de recursivitate. In aceste cazuri este extrem de usor sa urmarim valorile  la fiecare field sau variabila din call ...

Debugging multithreaded applications in Visual Studio

In postul precedent am povestit putin despre cateva lucruri de baza cand facem debug in Visual Studio. Astazi o sa continuam aceasta discutie si o sa vedem cum putem face debug intr-un mediu multi-thread si multi-processor. Cand lucram cu mai multe thread-uri, fereastra "Threads" devine cea mai buna prietena a noastra. Prin intermediul acesteia, cand aplicatia ajunge la un breakpoint putem sa vedem toate thread-urile active in procesul nostru. Pentru fiecare thread, putem sa vedem numele acestuia, ID-ul prioritatea si nu in ultimul rand call stack-ul pentru fiecare thread in parte (numele la coloana este "Location"). De foarte multe ori callstack-ul ne ajuta foarte mult nemaifiind nevoie sa selectam cate un thread in parte pentru a vedea callstack-ul. In momentul cand suntem intr-un breakpoint sa nu uitati ca restul thread-urile ruleaza in continuare. In dreapta acestei ferestre avem un buton "Freeze" prin intermediul caruia putem sa facem freeze la toat...

Base Visual Studio debugging functionalities

Cred ca un programator intr-o zi normala de lucru, are nevoie cel putin odata pe zi sa faca debug la cod. Visual Studio are extrem de multe functionalitati care pot sa fie utile in procesul de debug. Din pacate, dupa o perioada de timp uitam de toate feature-urile pe care le avem la dispozitie. In acest post o sa incerc sa trec peste o parte din aceste feature. In prima parte a postului o sa folosesc Visual Studio 2010, iar Visual Studio 2012 o sa folosesc doar pentru cele specifice la Visual Studio 2012. In mod normal pentru a putea face debug trebuie sa rulam proiectul nostru in dubug. Acest lucru se poate face folosind tasta F5 sau apasand butonul "Start Debugging" din meniul "Debug". In cazul in care procesul nostru deja ruleaza este nevoie sa ne atasam la proces. Acest lucru se face din meniu "Debug-> Attach to Process" sau prin combinatia de taste "Alt+Ctrl+P".  Puteti sa va atasati la unul sau mai multe procese. In cazul in car...

Cum pot sa forteti garbage collecter(GC) sa se execute din debug

Exista momente când am dorii sa putem apela GC când suntem în debug. Pentru acest lucru putem sa folosim Ctrl-Alt-Shift-F12 . Tot ce trebuie sa facem este sa ţinem apăsat Ctrl-Alt-Shift şi sa apăsam de doua ori F12 . Ce se va întâmpla? GC va rula automat şi va face dispose la obiectele care sunt marcate pentru ştergere. Se poate folosii cu succes când se face debug pe mai multe instante de VS, iar memoria maşini este încărcata aproape la maxim.

Cum sa facem debug si sa monitorizam o aplicatie ASP.NET de pe IIS.

De nenumărate ori, atat eu cat si voi am fost nevoiti sa facem debug pe aplicatii web. O sa incerc sa trec in revista modurile prin care se poate face debug la o aplicație web. Nu are importanta daca aceasta este ASP.NET sau MVC. Pentru a activa debugul trebuie sa setam atributul debug cu valorea true in web config. <configuration> <system.web> <compilation debug="true" /> </system.web> </configuration> Daca vrem sa activam doar pe anumite pagini debug-ul putem sa setam atributul Debug a directivei Page pe true. <%@ Page Debug="true" ... /> Sunt momente cand vrem doar pe masina locala( pe server) sa putem vedea mesajul de eroare, iar in cazul in care eroarea apare la un client sa afisam un mesaj standard. In acest caz putem seta atributul mode a nodului customErrors cu valoarea RemoteOnly . <configuration> <system.web> <customErrors defaultRedirect="Eroare.aspx" mode=...