Debugging Tools – Practical presentation about tools that will make your life easier – PDB



Debugging Tools – Practical presentation about tools that will make your life easier – PDB

0 0


debugging_tools

Talk about some debugging tools

On Github ctaloc / debugging_tools

Debugging Tools

Practical presentation about tools that will make your life easier

Created by Andrés Salazar S

Why should we use debugging tools?

The answer is simple:

TIME

“Time is money.” – Benjamin Franklin
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).

Let's start with some tools for Python & Django

PDB

The Python Debugger

Instead of using flags

							# buggy code
print "What I'm I doing?"
# More buggy code
						

Try using this

# buggy code
import pdb; pdb.set_trace()
# More buggy code
						

Or

$ python -m pdb myscript.py

Most used commands:

  • h(elp)
  • w(here)
  • d(own)
  • u(p)
  • s(tep)
  • n(ext)
  • r(eturn)
  • c(ont(inue))
  • break
  • l(ist)
  • a(rgs)
  • p
  • q(uit)
Help: te muestra la lista de comandos disponibles w(here): Te muestra el tu ubicacion en la parte mas baja de la pila, o en la instruccion proxima a ejecutar. d(own): te mueve a un nivel inferior en la pila si es que hay u(p): te mueve a un nivel superior en la pila s(tep): ejecuta la linea actual, si es una funcion, ejecutara la primera instruccion de la funcion n(ext): Similar a step, pero con la diferencia de que si es una funcion la ejecuta hasta retornar r(eturn): Continua la ejecucion hasta el final de la subrutina c(ontinue): continua la ejecucion hasta conseguir un breakpoint o hasta el final break: te permite crear un breakpoint dada una linea l(ist): muestra el codigo en la seccion de la pila que te encuentres visualizando a(rgs): te muestra los argumentos(si existen) en nivel de ejecucion que te encuentres ejecutando p(rint): te permite evaluar una expresion e imprimir su valor q(uit): Te permite abortar la ejecucion del programa que se esta ejecutando

Some tips for PDB

  • To improve pdb usage, install ipython & ipdb with pip
  • Remember you can do pretty much anything in the PDB prompt
  • If you have problems assigning variables try using exclamation mark: eg: !p = "test"

Examples

test1: En este ejemplo tenemos un modulo con multiples funciones, las cuales una de estas tiene un error python -m ipdb test1.py: prueba con next, continue, quit, prueba insertando el settrace dentro del codigo python -m ipdb test2.py: prueba con where, list, args, break

PuDB

Visual debugger for Python

Similar to PDB but GUI-based

It is called in a similar way:

# buggy code
import pudb; pudb.set_trace()
# More buggy code
						

Some available commands:

  • SHIFT + ?
  • CTRL + p
  • SHIFT !
  • b
  • H
  • u
  • d
  • j/k - up/down
  • break
  • q(uit)
SHIFT + ?: Te muestra la lista de comandos disponibles y otras opciones CTRL + p: Te muestra las preferencias del debugger, bastante util. SHIFT + !: Te mueve a la consola del debugger b: Te permite agregar un breakpoint en el codigo s(tep): ejecuta la linea actual, si es una funcion, ejecutara la primera instruccion de la funcion H: Te mueve a la linea de codigo que esta por ejecutarse u: te mueve a un nivel superior en la pila d: te mueve a un nivel inferior en la pila si es que existe j/k - up/down: te mueves para arriba y para abajo en e lcodigo break: te permite crear un breakpoint dada una linea q(uit): Te permite abortar la ejecucion del programa que se esta ejecutando

Examples

Ejemplo 1: corret test1 en examples: pudb test1.py

Werkzeug

Django traceback page with steorids!

Werkzeug Features

  • Provides a nice access view to the source code.
  • AJAX based debugger.
  • Cleaner GUI

Requirements

You need to install the following packages inside a virtualenv:

								$ pip install django_extensions werkzeug
							

Then in your project folder run:

								$ python manage.py runserver_plus
							

Example

Cambiarte al proyecto de wavereview y correr: workon wavereview; python mange.py runserver_plus ir a: http://127.0.0.1:8000/first-time-wizard/step_1/

Tips & tricks for Chrome DevTools

debugger;

Allows you to create a breakpoint in your javascript file

Example

Correr proyecto de talpor com python talpor.py en el home

console.error(ErrorMessage);

Similar to console.log but it will raise an error

Example

console.count(label);

allows you to count giving a specific label

Example

function foo(){ console.count("fooed"); }

console.table(elem);

Allows you to represent any element as a table

Example

Copiar este codigo en la consola: function Person(firstName, lastName, age) { this.firstName = firstName; this.lastName = lastName; this.age = age; } var family = {}; family.mother = new Person("Susan", "Doyle", 32); family.father = new Person("John", "Doyle", 33); family.daughter = new Person("Lily", "Doyle", 5); family.son = new Person("Mike", "Doyle", 8); console.table(family, ["firstName", "lastName", "age"]);

console.time(label); & console.timeEnd(label)

Starts a new timer with an associated label.

Example

Copiar este codigo en la consola: console.time("Array initialize");var array= new Array(1000000);for (var i = array.length - 1; i >= 0; i--) { array[i] = new Object();};console.timeEnd("Array initialize");

$0

It returns the selected element in the html.

Example

$_

It returns the last value returned in the console.

Example

inspect(elem);

It will bring you to the HTML element..

Example

Referencias:

PymoTW

Python Conquers the Universe

PDB

PUDB

THE END

BY Andres Salazar