¿Por qué uso C++? (IV)

Esta entrada es continuación de esta otra.

Otra cosa que me llama mucho la atención es el comentado del código. Yo no comento, o más bien comento poco o muy poco, generalmente en las cabeceras de las clases y los métodos, y sin embargo cojo código que no he tocado en tres o cuatro años y lo entiendo a la primera, y de hecho, cuando me avisan de algún bug, conforme me van contando lo que pasa, si recuerdo el código, veo no sólo en qué parte está, sino casi el método que está fallando. Y si no lo recuerdo, un rápido vistazo a los fuentes rápidamente me lleva a las líneas del error.

Harina de otro costal es luego encontrar lo que falla. Muchas veces no es trivial y me lleva su tiempo, pero si en general tengo acceso al depurador, un traceado y una parada en el lugar oportuno soluciona el tema. Ya lo he dicho antes, no suelo tener los típicos problemas de pisado y fugas de memoria, así como de sincronización, o más bien si los tengo los cazo cuando estoy creando el programa, por lo que en general no suelo encontrarme con bugs post-release demasiado gordos. Siempre hay excepciones, claro.

Depurar hardware es harina de otro costal, así como depurar protocolos de comunicaciones en tiempo real, y más difícil todavía cuando se juntan ambas cosas, máxime porque no puedes parar el código a ver qué está pasando. Cuando quieras hacerlo ya has abortado el proceso, o se te la llenado la uart, o te ha saltado un timer que no debía saltar, etc. A veces, poniendo y activando los puntos de interrupción adecuados y en la secuencia adecuada, se puede ver algo, pero al final lo más fácil es el traceado por puerto serie o por luces. Sí, luces, poner dos o tres LEDs o bombillas en una placa y encenderlas y apagarlas según te interese para ver por dónde pasa tu programa o el valor de alguna variable.

El traceado es más fácil, porque sólo tienes que ir poniendo salidas a la ventana de debug en el PC, y a un puerto serie o a un log en RAM con la información que quieras ver, y luego analizarla a tiempo pasado, volver a colocar y/o cambiar más trazas y seguir. Con lo de “log en RAM” me refiero a ir almacenando una serie de cadenas en RAM y luego mirarlas con el JTAG para simular lo mismo que si me las hubiera enviado por puerto serie cuando no tengo uno disponible.

3 comentarios sobre “¿Por qué uso C++? (IV)”

  1. O eres un monstruo o un sobrao.. pero si, pecas de algo de soberbia.. en fin.. como no me interesa tu forma de ser ni lo que me cuentes a partir de ahora, paso de leerte o comentar.
    un saludo de un simple programador que no sabe c++ (vamos segun tu, un inutil)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *