Building Rock-Solid Software Telerik Software Academy High-Quality Code.

Slides:



Advertisements
Similar presentations
Creating Vector Graphics in the Web Learning & Development Telerik Software Academy.
Advertisements

Redundant Array of Independent Disks Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Writing HTML made easier Telerik School Academy HTML, CSS and JavaScript.
JavaScript Development Tools
Inside Windows Boot Process Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Guidelines to Preparing and Delivering an Elevator Pitch Presentation Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training.
Two basic algorithms for path searching in a graph Telerik Algo Academy Graph Algorithms.
Binary, Decimal and Hexadecimal Numbers Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Eclipse + Android SDK, VS + Windows Phone SDK Telerik Software Academy Hybrid Mobile Applications.
Welcome to the JSON-stores world Learning & Development Telerik Software Academy.
Course Content, Evaluation, Exams Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Eclipse + Android SDK, VS + Windows Phone SDK Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Twitter Bootstrap Telerik Software Academy
Things you need to know George Georgiev Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.
Hamiltonian Cycle Penka Borukova Student at Telerik Academy.
Group Policy Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Reverse polish notation, Operations with big numbers Ivelin Rachev Telerik Corporation “Baba Tonka” High School of Mathematics.
Telerik Software Academy ASP.NET MVC.
Sales Processes, Sales Cycle and the Sales Force Margarita Antonova Volunteer Telerik Academy academy.telerik.com Business System Analyst Telerik.
Design Patterns that ease the design by identifying a simple way to realize relationships between entities. Antony Jekov Telerik Software Academy academy.telerik.com.
Using KendoUI for SPA Applications Learning & Development Telerik School Academy.
The way to create cross-platform apps Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
Searching for a Job, Writing CV and Cover Letter, Passing a Job Interview Telerik Academy for Software Engineers October 6 th 2012 – Sofia academy.telerik.com.
Drive Partitioning Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Telerik Software Academy Mobile apps for iPhone & iPad.
Google APIs and Facebook API Ivaylo Kenov Penka Borukova Telerik Corporation Telerik Academy Students.
The magic of virtual machines Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Web development with ExpressJS Learning & Development Telerik School Academy.
What it is, and does it work Learning & Development Telerik School Academy.
Device APIs with Xamarin
Telerik Software Academy Mobile apps for iPhone & iPad.
Academy.telerik.com Class of , Fall 2013.
Telerik Software Academy Databases.
Google APIs and Facebook API Ivaylo Kenov Penka Borukova Telerik Corporation Telerik Academy Students.
Telerik Software Academy ASP.NET Web Forms.
What are WinJS and WinRT, Using the APIs in JavaScript George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer itgeorge.net.
JavaScript Modules and Patterns Telerik Software Academy
The True power of dynamic web pages Learning & Development Team Telerik Software Academy.
Approximate string matching Evlogi Hristov Telerik Corporation Student at Telerik Academy.
Xamarin with SQLite Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
Know your Tools! Telerik Software Academy JavaScript Fundamentals.
Ivaylo Kenov Telerik Software Academy Technical Assistant.
Developing "evil" JavaScript applications Learning & Development Telerik School Academy.
Process and Writing Styles Tina Stancheva Doroteya Agayna Telerik Software Academy academy.telerik.com Writing Documentation.
The PhoneGap History Doncho Minkov Telerik Software Academy Technical Trainer
Building Rock-Solid Software Svetlin Nakov Telerik Software Academy Manager Technical Training
Adobe® Photoshop® CS6 Essentials
Cultivating Professionals for Your Company The Success Story of Telerik Svetlin Nakov, PhD Manager Technical Training Telerik Corp.
Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
The way of the ViewModel and the Binding Learning & Development Telerik School Academy.
Nencho Nenchev Doroteya Agayna Telerik Software Academy Telerik Support Leads.
Installation, Sample Usage, Strings and OOP Telerik Software Academy Software Quality Assurance.
In JavaScript Learning & Development Telerik Software Academy.
Services in AngularJS Telerik Software Academy
Svetlin Nakov Telerik Software Academy Manager Technical Training
What is Roslyn and how can we use it? Telerik Academy Plus C# 6.0 and Roslyn Seminar.
Splitting JavaScript into Dependent Modules Learning & Development Telerik Software Academy.
Changing the default visualization of views in Xamarin.Forms Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
Telerik Software Academy HTML5.
What to expect from the new IDE Telerik Academy Plus Visual Studio 2015 and ASP.NET 5.
Building Rock-Solid Software Learning & Development Telerik Software Academy.
Hristian Hristov Telerik Corporation
I have to use math? I am out of here… Telerik School Academy Unity 2D Game Development.
Monitoring Server Performance Organizing Your Support Model Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Automating Windows Deployment Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Server Roles and Features Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Binary, Decimal and Hexadecimal Numbers Telerik Software Academy C# Fundamentals – Part 2.
Nikolay Kostov Telerik Software Academy academy.telerik.com Team Lead, Senior Developer and Trainer
Adding UI and Audio element Telerik Academy Plus Unity 2D Game Development.
Presentation transcript:

Building Rock-Solid Software Telerik Software Academy High-Quality Code

 Introduction to Debugging  Visual Studio Debugger  Breakpoints  Data Inspection  Threads and Stacks  Finding a Defect 2

 The process of locating and fixing or bypassing bugs (errors) in computer program code  To debug a program:  Start with a problem and stable source state  Isolate the source of the problem  Fix it and send the fix to the source control  One change at a time  Create regression test  Debugging tools (called debuggers) help identify coding errors

 Testing  A means of initial detection of errors  Debugging  A means of diagnosing and correcting the root causes of errors that have already been detected 5

 Perfect code is an illusion  There is no non-trivial software without bugs  programmers.stackexchange.com/q/41248/ programmers.stackexchange.com/q/41248/  There are factors that are out of our control  Debugging can viewed as one big decision tree  Individual nodes represent theories  Leaf nodes represent possible root causes  You should be able to debug code that is written years ago  $60 Billion per year in economic losses due to software defects 6

 Reduce number of code lines  Write less and write smarter. Keep it simple.  Reduce complexity / Good code separation  Reduce number of possible code paths  Understand the size of the input & output spaces (be aware of the corner cases)  Unit test (TDD) with almost 100% test coverage  Always assume your code is not working  Prove it otherwise!  Always check the code you write  Experience matters / Read, learn, code 7

 Visual Studio IDE gives us a lot of tools to debug your application  Adding breakpoints  Visualize the program flow  Control the flow of execution  Data tips  Watch variables  Debugging multithreaded programs  and many more…

 Starting a process under the Visual Studio debugger  Attaching to an already running process  Without a solution loaded you can still debug  Useful when solution isn't readily available  Debug menu -> Attach to Process 10

 Debug menu, Start Debugging item  F5 is a shortcut  Easier access to the source code and symbols since its loaded in the solution  Certain differences exist in comparison to debugging an already running process  Hosting for ASP.NET application  VS uses a replacement of the real IIS 11

 Debug Windows are the means to introspect on the state of a process  Opens a new window with the selected information in it  Window categories  Data inspection  Threading  Accessible from menu  Debug -> Windows

 Convenient shortcut to common debugging tasks  Step into  Step over  Continue  Break  Breakpoints  Customizable to fit your needs  Add and/or remove buttons 13

 By default, an app will run uninterrupted (and stop on exception or breakpoint)  Debugging is all about looking at the state of the process  Controlling execution allows:  Pausing execution  Resuming execution  Stepping through the application in smaller chunks  In the case of IntelliTrace (recording steps), allows backward and forward stepping 14

 IntelliTrace operates in the background, records what you are doing during debugging  You can easily get a past state of your application from the IntelliTrace  You can navigate your code with any part and see what’s happened  To navigate, just click any of the events that you want to explore 15

 Visual Studio offers quite a few knobs and tweaks in the debugging experience  Options and settings is available via Debug -> Options and Settings  Examples of Options and Settings  Enable just my code (ignore other code)  Enable.NET framework source stepping  Source server support  Symbols (line numbers, variable names)  Much more… 16

 Ability to stop execution based on certain criteria is key when debugging  When a function is hit  When data changes  When a specific thread hits a function  much more  Visual Studio debugger has a huge feature set when it comes to breakpoints

 Stops execution at a specific instruction (line of code)  Can be set using Debug->Toggle breakpoint  F9 shortcut  Clicking on the left most side of the source code window  By default, the breakpoint will hit every time execution reaches the line of the code  Additional capabilities: condition, hit count, value changed, when hit, filters 19

 Managed in the breakpoint window  Adding breakpoints  Removing or disabling breakpoints  Labeling or grouping breakpoints  Export/import breakpoints 20

 Allows you to excerpt even more control of when a breakpoint hits  Examples of customization  Machine name  Process ID  Process name  Thread ID  Thread name  Multiple can be combined using &, ||, ! 21

 Debugging is all about data inspection  What are the local variables?  What is in memory?  What is the code flow?  In general - What is the state of the process right now and how did it get there?  As such, the ease of data inspection is key to quick resolution of problems

 Visual Studio offers great data inspection features  Watch windows  Autos and Locals  Memory and Registers  Data Tips  Immediate window 24

 Allows you to inspect various states of your application  Several different kinds of “predefined” watch windows  Autos  Locals  “Custom” watch windows also possible  Contains only variables that you choose to add  Right click on the variable and select “Add to Watch” 25

 Locals watch window contains the local variables for the specific stack frame  Debug -> Windows -> Locals  Displays: name of the variable, value and type  Allows drill down into objects by clicking on the + sign in the tree control  Autos lets the debugger decide which variables to show in the window  Loosely based on the current and previous statement 26

 Memory window can be used to inspect process wide memory  Address field can be a raw pointer or an expression  Drag and drop a variable from the source window  Number of columns displayed can be configured  Data format can be configured  Registers window can be used to inspect processor registers 27

 Provides information about variables  Variables must be within scope of current execution  Place mouse pointer over any variable  Variables can be expanded by using the + sign  Pinning the data tip causes it to always stay open  Comments can be added to data tips  Data tips support drag and drop  Importing and exporting data tips 28

 Useful when debugging due to the expansive expressions that can be executed  To output the value of a variable  To output the value of a variable  To set values, use =  To set values, use =  To call a method, use. (arguments)  Similar to regular code  Supports Intellisense 29

 Fundamental unit of code execution  Commonly, more than one thread .NET, always more than one thread  Each thread has a memory area associated with it known as a stack used to  Store local variables  Store frame specific information  Memory area employs last in first out semantics 31

 Contains an overview of thread activity in the process  Includes basic information in a per thread basis  Thread ID’s  Category  Name  Location  Priority 32

 A threads stack is commonly referred to as a callstack  Visual Studio shows the elements of a callstack  Local variables  Method frames 33

1.Stabilize the error 2.Locate the source of the error a)Gather the data b)Analyze the data and form hypothesis c)Determine how to prove or disprove the hypothesis d)Prove or disprove the hypothesis by 2c 3.Fix the defect 4.Test the fix 5.Look for similar errors 35

 Use all available data  Refine the test cases  Check unit tests  Use available tools  Reproduce the error several different ways  Generate more data to generate more hypotheses  Use the results of negative tests  Brainstorm for possible hypotheses 36

 Narrow the suspicious region of the code  Be suspicious of classes and routines that have had defects before  Check code that’s changed recently  Expand the suspicious region of the code  Integrate incrementally  Check for common defects  Talk to someone else about the problem  Take a break from the problem 37

 Understand the problem before you fix it  Understand the program, not just the problem  Confirm the defect diagnosis  Relax  Save the original source code  Fix the problem not the symptom  Make one change at a time  Add a unit test that expose the defect  Look for similar defects 38 Source:

 Your ego tells you that your code is good and doesn't have a defect even when you've seen that it has one.  How "Psychological Set" Contributes to Debugging Blindness 39

форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен SEO курс - оптимизация за търсачки уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop уроци по програмиране и уеб дизайн за ученици ASP.NET MVC курс – HTML, SQL, C#,.NET, ASP.NET MVC безплатен курс "Разработка на софтуер в cloud среда" BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране, книги – безплатно от Наков безплатен курс "Качествен програмен код" алго академия – състезателно програмиране, състезания ASP.NET курс - уеб програмиране, бази данни, C#,.NET, ASP.NET курсове и уроци по програмиране – Телерик академия курс мобилни приложения с iPhone, Android, WP7, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен SEO курс - оптимизация за търсачки уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop уроци по програмиране и уеб дизайн за ученици ASP.NET MVC курс – HTML, SQL, C#,.NET, ASP.NET MVC безплатен курс "Разработка на софтуер в cloud среда" BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране, книги – безплатно от Наков безплатен курс "Качествен програмен код" алго академия – състезателно програмиране, състезания ASP.NET курс - уеб програмиране, бази данни, C#,.NET, ASP.NET курсове и уроци по програмиране – Телерик академия курс мобилни приложения с iPhone, Android, WP7, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране

 C# Telerik Academy  csharpfundamentals.telerik.com csharpfundamentals.telerik.com  Telerik Software Academy  academy.telerik.com academy.telerik.com  Telerik Facebook  facebook.com/TelerikAcademy facebook.com/TelerikAcademy  Telerik Software Academy Forums  forums.academy.telerik.com forums.academy.telerik.com