Ir al contenido principal

I have been playing with pdb for debugging code (introductory level)

Well, this is time to talk about something I have been playing, the pdb standard module python provides. I'll talk in the context of py 3.7+ since there are differences that improve how to work with this.

Well, first of all, as you should found in this field and coding experiences and challenges. You have to deal with bugs, unexpected errors, or even worst, unexpected behavior which sometimes is most difficult to trace.

Here are some lights on how to use it, this is really useful if your life is coding :). Consider the following commands table.

CommandDescription
sExecute the current line and stop at the first possible occasion.
nContinue the execution until the next line in the current function is reached or it returns.
pShows the values of variables in context code.
llList the whole source code for the current function or frame
lIn contrast to ll, this command shows a shorter snippet of code.
l.If you pass the param . to this command, it will show you always 11 lines around the current line.
bSet a breakpoint, you can specify either a line number or function name where execution will stop.
cContinues execution until a breakpoint is found.
qQuit debugging and exit.

Having seen the table above, then let's play a bit. See the following example:


After running python example1.py, pdb comes in place, you'll see three important elements:
  1. the file, and line number in which pdb stand at this moment
  2. line code to see the context in which we are
  3. the pdb command line waiting for a command
Let's run some commands there:


I entered ll command (see on the table it meaning), as you can realize it, it shows all the context of line 14, remember this command shows more lines to better understand the context of the code, also you always see the -> that shows you where you are. After that first command entered, I ran n which continues to the next line (15).

You could always check values on any variable while you are walking throughout your code, use the command p and the variable name as follow:


Finally, use q to exit pdb module.

Next post, we'll talk and play with breakpoint functionality.




Comentarios

Entradas populares de este blog

Cómo dar acceso a una ip externa a postgresql y concediendo permiso desde iptables

Recientemente tuve la necesidad de aplicar un par de ajustes en nuestro SGDB  (postgresql) en uno de nuestros entornos de desarrollo. Escenario encontrado: No tenía acceso al usuario administrador de PG postgres Contaba con un usuario de sistema ( Linux ) sudoer PG no estaba preparado para permitir conexiones desde fuera El sistema operativo tenia activo iptables y el puerto 5432 no estaba habilitado para escuchar en el exterior en una ip específica. Me tocó leer un poco sobre cómo configurar PostgreSQL para permitir conexiones desde fuera y cómo configurar una regla en iptables que permitiera acceso al proveedor desde el exterior al puerto que necesitaba estuviera escuchando la ip del proveedor. Resumiré en las siguientes líneas las configuraciones más importantes para: Proveer acceso desde PG a un usuario externo. Permitir comunicación entre la ip del usuario externo y nuestro puerto en el servidor donde está nuestro PG . ...

Cómo extraer una columna específica de un archivo CSV

Recientemente me encontré con un pequeño reto, simple pero súper útil cuando no quieres complicarte la vida. Necesitaba de una serie de archivos en formato CSV, separados por comas, extraer únicamente las primeras 3 columnas de 4, ¡sí!, pocas columnas, pero con cientos de filas que no estaba dispuesto a editar a mano, y descubrí el comando cut, lo utilicé de la siguiente manera: [jonas]$ cut -d "," -f1-3 origen.csv > destino.csv Donde -d hace referencia al delimitado en el el archivo, -f1-3 hace referencia a las columnas que vamos a extraer, de la número 1 a la 3, origen.csv hace referencia al archivo de original sobre el cuál vamos a tomar las columnas que necesitamos y finalmente destino.csv que es el archivo destino que almacenará el nuevo resultado, y listo!, podrías complicarte la vida con awk , pero si no eres tan experto, es algo que no vas a utilizar diario y no necesitas invertir tanto tiempo, pues, algo simple como cut te va bien.

Finalmente me encontré con ella y desde el día #1, hemos disfrutado juntos...

Hace más de 4 años que nos mirábamos, pero nos ignorábamos, fue quizá por que no era el momento, yo tenía una relación más dinámica, más demandante, más intensa, sin embargo en ese lapso de 4 años si tuve 3 encuentros con la que hoy ahora comienzo a sentirme entregado: Yoga He hecho Crossfit por mucho tiempo, lo he amado, y me he entregado al 100%, ese ha sido mi receso del día en una vida adulta. En el lapso de los últimos 4 años, un amigo -colombiano por cierto- me invitó a su casa a hacer yoga, él en ese tiempo era maestro de yoga en un pequeño pueblo pegado al mar en las costas de Quintana Roo. Tomé 3 clases con él, y desde la primera, quedé enamorado, sabía que quería intentarlo pero estaba concentrado en un ejercicio de más alto impacto, supongo que la edad también juega un factor importante, al menos eso pienso. Hoy con el contexto que hemos estado viviendo, el encierro y aislamiento principalmente, nuestro reto más importante, toca reconfigurarse a si mismo, probar nuevos c...