Debugging en Tracing met Visual Basic.NET



Vergelijkbare documenten
ASRemote WebService. Via deze webservice kunt u:

VB Magazine Online /08 1 / 6

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Automatische Installatie op IIS server

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Installatie SQL: Server 2008R2

Een ASP.NET applicatie opzetten. Beginsituatie:

vbg.vbnet.beginner Foutafhandeling binnen Visual Basic.NET

Inleiding Visual Basic en VBA. Karel Nijs 2009/01

Versturen van vanuit een Delphi VCL toepassing

UBC op Microsoft Windows 64-bits

Installatie van sqlserver

Stappenplannen MailPlus SOAP API

vbg.vbnet.beginner Omgaan met files en directories binnen Visual Basic.NET

Sparse columns in SQL server 2008

Implementatie AssurePay ASP.NET. ideal

INHOUDSOPGAVE Het Boekenwinkeltje Registreer.aspx Opgaven... 97

Een eerste applicatie

Programmeren in Excel VBA beginners. Karel Nijs 2010/09

Installatie MicroSoft SQL server 2012 Express

Zelftest Inleiding Programmeren

DrICTVoip.dll v 2.1 Informatie en handleiding

Planbord installatie instructies

Documentatie Distributed Services Enterprise Service Bus

Visual Basic 2005 nieuwe taalelementen André Obelink, MCSD, MVP

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

INSTALLATIE EXCHANGE CONNECTOR

Absentie Presentie Server Migratie

ManualMaster Systeem 6.1 (ManualMaster Administrator, ManualMaster WebAccess en ManualMaster WebEdit)

Installatie stappen Microsoft SQL Server 2008 R2 Express With Tools:

Installatie SQL Server 2012

Software-Ontwikkeling I Academiejaar

DHCP Scope overzetten van Windows Server 2003 R2 naar Windows Server 2012

ECTS fiche. Module info. Evaluatie. Gespreide evaluatie OPLEIDING. Handelswetenschappen en bedrijfskunde HBO Informatica

Procedure Access - MSDE

Stappenplan bij het gebruik van SQL 2008 Versie 2.0,

INHOUDSOPGAVE. Access: programmeren met VBA INHOUDSOPGAVE 1 INTRODUCTIE 4

Installatie en configuratie documentatie

XML Web Services of.net Remoting? W ANNEER GEBRUIK JE WELKE TECHNOLOGIE VOOR DE AANROEP VAN REMOTE SERVICES

Dynamiek met VO-Script

Inhoud. VBA Excel 2010

Labo 1 Programmeren II

Stappenplan bij het gebruik van SQL Express 2005 Versie 2.0,

Pinakes Integrator Client

ChainWise server randvoorwaarden

Installatie stappen Microsoft SQL Server 2012 Express With Tools:

INFITT01 - Internettechnologie WEEK 8

Dieper in Visual Basic.Net

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

Indoor Navigation System

Nog even snel kleine issues oplossen

Installatie en configuratie 1.1. Licentie Systeem. Dé specialist in ruimtelijke informatievoorziening

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Programming Content Management Server 2002

1 Labo 4 H 8 Jobs, Alerts en Operators H 9 Monitoring en Troubleshooting

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

FULL HOUSE INSTALLATIEPROCEDURE EN SYSTEEMEISEN Netwerkversie per oktober 2010

De SAP Cloud Connector 2.0 maakt SAPUI5 ontwikkeling via de WEB-IDE mogelijk met data uit je eigen backend systeem.

Popsy Financials. Overstap Access-MSDE

Flexibele oplossing om de eid kaart aan te spreken vanuit.net (en Delphi, Visual Basic, C++ etc)

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

Werken met ActiveX (COM) componenten in.net

Een Data Driven toepassing op basis van Visual Objects en SQL Server

Installatie. Easyshop. Gebruiker. Gebruiker 4 Gebruiker 3. Klant 1 van de Gebruiker. Progress/Openedge/ODBC installatie (3) KluwerWebService (4)

Werkomgeving. Android Studio. Android - werkomgeving 1/6

Selenium IDE Webdriver. Introductie

Cerussa FIN Pre-requirements

DataFlex 19.0 SQL Server

Beschrijving voor het meten van Citrix-performance dmv een virtual user.

Ontwikkelen Smart Documents met Microsoft Office System

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren

Angular Best Practices Door Alex en Chris van Beek

NHibernate als ORM oplossing

Programmeren: Visual Basic

Aanvullende doorgebouwde solutions Raadpleeg solution voor eventuele solutions die na de release van de PD zijn doorgebouwd.

E-Basic. E-Studio. E-Run Real-Time Experiment Generator. E-Merge. E-DataAid Spreadsheet Application for E-Prime Data Files

Handleiding Microsoft SQL Server configuratie

Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica

Boutronic. MSSQL Express server voor Log functie. >> Installatie handleiding << 23 april 2014, versie 1.0d

APEX en JasperReports

Installatie SQL Server 2014

Opnemen en Afspelen. Introductie. Voorbereiding. Starten van de script tool. Tips & Tricks Opnemen en Afspelen

1 Een beetje theorie vooraf 1. Wat is een programma? 2 Hoe maakt u een programma? 3 IL-code en JIT-compiler 5

Curriculum Vitae. Ing. R. van de Roer (Rogier) Geboortedatum: 10 oktober Informatica / Informatiekunde, Den Haag

Werken op afstand via internet

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest.

Installatie King Task Centre

Datastructuren en algoritmen

Fidura Enterprise. Documentatie Installatie BTW 2012 Fix, Versie / / 3.0.1

Systeemvereisten. Systeemvereisten voor Microsoft Dynamics NAV Rolgebaseerde client

Transcriptie:

Debugging en Tracing met Visual Basic.NET André Obelink, MCSD Visual Basic Groep

Me.About Me.VBG - een van de oprichters 1995, eindredacteur, website Me.Experience - VIC20, Commodore 64, Clipper CBM basic vanaf 1982 - Visual Basic 1.0 Visual Basic.NET 2003/2005 - Rich Clients, Componenten, N-Tier, API s, Databases Me.Write() - Visual Basic Magazine, Microsoft.NET Magazine Me.CurrentJob -...

Visual Studio.NET debugger Alle.NET talen - Visual Basic.NET, C#, Native Win32 talen - Visual Basic 5.0, Visual Basic 6.0, C++, Transact-SQL - SQL Server 7.0, SQL Server 2000, Alle ASP.NET talen Alle ASP talen - VBScript, Jscript,

Verschillende typen fouten Syntax Errors - compiler kan code niet compileren - relatief makkelijk op te lossen, de VS.NET IDE biedt je hulp - voorbeeld: typefouten, parameters vergeten etc. Runtime Errors - code is gecompileerd - met debugging goed te traceren - te voorkomen door defensief te programmeren en exceptionhandling - bijvoorbeeld: delen door 0, netwerkverbinding niet aanwezig etc. Logical Errors - alles lijkt goed te gaan. - meest lastige fouten om op te sporen en op te lossen - bijvoorbeeld: berekeningen kloppen niet, onjuiste data in database

Edit & Continue in VB.NET 2003 Geen Edit & Continue meer aanwezig - heeft te maken met het feit dat we werken met gecompileerde code - goede nieuws: vanaf Visual Studio 2005 is het weer beschikbaar Waarom Edit & Continue niet moet terugkeren - Informality het spanningsveld tussen debuggen en testen - Trial and Error oplossen zonder werkelijk begrip van de fout - Er worden makkelijker nieuwe bugs geïntroduceerd. - inherent aan ad-hoc aanpassingen - tijdens een sessie meerdere fouten oplossen verhoogt risico nieuwe bugs - aanpassingen aan kleine codeblokken verhoogt risico nieuwe bugs

Configuration Manager Configuration = Debug Symbolbestand (*.pdb) Buildconfiguraties bestaan op 2 niveaus Project Solution

Breakpoints Veel gebruikte manier om debuggen te initiëren Flexibeler met condities, hitcount etc. Breakpoints worden opgeslagen bij project Breakpoint-window breakpoint tijdelijk uitzetten

Demo Breakpoints

Debug windows Output-window Locals-, Autos- en Watch-window - alleen de scope is anders - je kunt vanuit deze windows waarden muteren Command- en Immediate-window - hetzelfde window, het kan echter in Immediate-mode draaien - Command-window zoals naam zegt: commando s uitvoeren - Immediate-window opvragen variabelen, aanroepen procedure Andere windows - Call Stack-window - Me-window - Threads-window - Module-window - Register-window - Memory-window

Demo Debug Windows

Debug en Trace classes Classes met dezelfde met properties en methods - Trace ook geschikt voor gecompileerde applicaties in het veld Het zijn Shared classes soort public object Debug methods alleen aangeroepen wanneer DEBUG is aangegeven Trace methods alleen aangeroepen wanneer TRACE is aangegeven Zowel voor VB.NET als C# geldt: Release-builds standaard TRACE = True

Tracing code Write() en WriteLine() informatie wegschrijven - de informatie wordt naar elke TraceListener gestuurd WriteIf() en WriteLineIf() hiermee heb je invloed op het wel/niet loggen van de informatie - je eigen condities, zoals : x>y, intklantnr = 100 etc. - BooleanSwitch, TraceSwitch Fail() en Assert() Assert indien conditie: False Bovenstaande methods accepteren een geformateerde string: (message, category) - helaas zijn dit sealed classes, daardoor niet snel te verhelpen

Trace opmaak informatie Trace en Debug classes kennen properties en methods waarmee je de formattering kan beïnvloeden IndentSize - het aantal spaties dat ingesprongen moet worden IndentLevel - past de inspringing aan voor de huidige WriteLine() of WriteLineIf() Indent() en Unindent() methods wijzigen ook de IndentLevel

Trace class Write() en WriteLine() kent twee parameters 1. Message de tekst die je wilt loggen 2. Category de categorie van de melding De informatie wordt als volgt geformateerd: - <category> : <message> Trace.WriteLine( Eerste niveau, info ) Trace.Indent() Trace.WriteLine( Tweede niveau ) Trace.Unindent() Trace.WriteLine( Eerste niveau, info ) info: Eerste niveau Tweede niveau info: Eerste niveau

Trace Listeners Alle gelogde data wordt doorgeven aan alle trace listeners binnen het Application Domain - meestal geconfigureerd door het Config-bestand - je kunt ook at runtime classes toevoegen aan de collectie Elke Application Domain creëert haar eigen TraceListners collectie Trace Listeners zijn afgeleidt van de TraceListeners class dus zelfbouw mogelijk!

Trace Listeners Class DefaultTraceListener (standaard aanwezig) EventLogTraceListener Omschrijving Trace berichten worden weggeschreven naar naar OutputDebugString en naar de geattachde debugger (VS.IDE). Trace berichten worden weggeschreven naar het aangegeven EventLog. TextWriterTraceListener MijnTraceListener Trace berichten worden weggeschreven naar het aangegeven Tekstbestand (Stream) Trace berichten worden weggeschreven naar een SQL-Server of Accessbestand of

Demo Debug en Trace classes

BooleanSwitch en TraceSwitch Invloed op welke data er gelogd wordt BooleanSwitch True/False Aan/Uit TraceSwitch 5 niveaus cumulatief - Off (0) Geen Trace - Error (1) Summiere foutmeldingen - Warning (2) Error + waarschuwingen - Info (3) Warning + andere korte boodschappen - Verbose (4) Info + gedetailleerde boodschappen Ook in te stellen in Application Config bestand Jij moet zelf waarden checken! WriteLineIf()

Switches in Application Config <?xml version="1.0" encoding="utf-8"?> <configuration> <system.diagnostics> <switches> <add name="mijnbooleanswitch" value="1" /> <add name="mijntraceswitch" value="3" /> </switches> </system.diagnostics> </configuration>

Voorbeelden gebruik Switches Dim objblnswitch As New BooleanSwitch("MijnBooleanSwitch", "") Dim objtrcswitch As New TraceSwitch("MijnTraceSwitch","") ' Value = 1 --> Wel loggen Trace.WriteLineIf(objBlnSwitch.Enabled = True, "Boolean") ' Value = 3, Error = 1, 1 < 3 -- > Wel loggen Trace.WriteLineIf(objTrcSwitch.TraceError = True, "Error") ' Value = 3, Verbose = 1, 4 niet < 3 -- > Niet loggen Trace.WriteLineIf(objTrcSwitch.TraceVerbose = True, "Verbose")

Dynamische TraceListener <?xml version="1.0" encoding="utf-8"?> <configuration> <system.diagnostics> <switches> <add name="mijnbooleanswitch" value="1" /> <add name="mijntraceswitch" value="3" /> </switches> <trace autoflush="true"> <listeners> <add name="mijnlog" type="system.diagnostics.textwritertracelistener" initializedata="c:\mijnlog.log" /> </listeners> </trace> </system.diagnostics> </configuration>

Demo Dynamische TraceListener

Debug SQL-Server Stored Procs Min. SQL Server 7.0, SQL Server 2000 aanbevolen Database server min. Windows NT 4.0 MSDE2000 kan men debuggen met VS.NET Pro > Voor echte SQL2000 VS.NET Ent. of Architect Installeer SDI (niet standaard).

Probleemoplossing debug SQL Sqlle.dll + Sqldbreg2.exe op debug werkstation Sqldbg.dll op server + debug werkstation + registr. Mssdi98.dll in \binn map van SQL Server - SQLServer2000 installatie VS.NET juiste versie op juiste locatie - MSDE2000 installatie VS.NET Pro juiste versie op onjuiste locatie Rechten op sp_sdidebug stored procedure - hangt af van gebruikte accounts (service + programma) - EXEC master..sp_sdidebug WinXP SP2 niet debuggen in eigen applicatie - debuggen vanuit Server Explorer Step Into gaat goed - op aanvraag hotfix bij Microsoft beschikbaar

Debuggen SQL-Server Server Explorer Stored Proc Step Into SP Breakpoint moet wel in Stored Procedure zelf staan en kan niet in aanroepende functie Binnen code-windows ook Run Selection

Demo SQL Server debugging

Samenvattend Tracing is een geweldige tool, omdat - je inzicht kunt krijgen in lastige, logische problemen - je flexibel bent in het wel/niet tracen, welk niveau, welke opslagmedia - je van buitenaf het trace-gedrag kan beïnvloeden (App.Config) Tracing is een geweldige tool, maar - klant moet niet de indruk krijgen dat je programma vol bugs zit - proberen te vermijden om veel te tracen naar EventLog (traag) - elke WriteLineIf() is een check in je programma (performance) - Trace.Assert staat is enabled in standaard Release Builds - *.pdb bestanden nodig, maar beïnvloeden performance nadelig

Meer informatie Comprehensive VB.NET debugging Mark Pierce - A!Press Microsoft.NET Magazine #7 Debugging en Tracing met Visual Basic.NET André Obelink, VBG (december 2004) http://msdn.microsoft.com http://www.informit.com

een samenwerking tussen 2004 André Obelink andre@obelink.com

Conditional Compilation #Const Debug = False #Const Trace = True ' Debugging uit ' Tracing aan Class VerkoopOrder Public Sub Save() #If Debug Then ControleerRegelsMetKop() #If Trace Then SchrijfNaarLog( Test 1,2,3 ) #End If #End If VerkoopOrderOpslaan() End Sub End Class In dit geval nooit bij Trace

Trace Listeners - Constructor De InitializeData attribuut wordt aangegeven in de constructor van de TraceListener New() - DefaultTraceListener, geen parameters - EventLogTraceListener, de naam van het EventLog - TextWriterTraceListener, de naam van het tekstbestand of de stream