Archivo

Entradas Etiquetadas ‘Debug’

Aplicación DebugStringView

martes, 1 de abril de 2025 Sin comentarios
Share Button

Versión 1.1  (Marzo 2025)

Introducción

Es una aplicación que le permite monitorizar la salida de depuración en su sistema local. Es gratuita y nos mostrará todas las cadenas que se muestren usando la API OutputDebugString de Windows.

Licencia

Se distribuye bajo licencia GPL 3.0. Puede usarla y modificarla libremente.

Características

  • Permite guardar el contenido de la captura en ficheros con extensión (*.dsvlog).
  • Filtrado rápido de mensajes por procesos (utiliza el nombre del proceso), incluyendo N procesos con diferente ProcessID, pero el mismo nombre.
  • Posibilidad de colorear la salida de mensajes por proceso (mejor y más clara visualización para el usuario).
  • Ocultar y mostrar columnas según lo que interese (más información o más espacio)
  • Avance automático a medida que van apareciendo los mensajes de forma que siempre se visualizan los últimos mensajes enviados a la consola.
  • Panel de “Lista de procesos” que nos muestra los procesos (ProcessName – nombre del proceso) que están enviando mensajes a la consola.
  • Permite el cambio rápido de la fuente de letra utilizada en la visualización con las fuentes monoespaciadas más habituales. También la opción de acceder a la pantalla de propiedades y cambiar el resto de características.
  • La aplicación es multiidioma y fácilmente ampliable con más ficheros de idioma sin necesidad de cambios en la aplicación (carga de idioma dinámica).
  • Comprobación de actualizaciones disponible y automática al entrar en la aplicación.
  • Columnas personalizables.

Multiidioma

La aplicación trabaja con múltiples idiomas, que además que cargan de forma dinámica. Se pueden incorporar más idiomas de forma fácil (y sin recompilar) y la aplicación los reconocerá y los incorporará al menú de forma automática una vez que se ejecute.
La aplicación busca en la carpera “Languages” ficheros de idiomas.

¿Quieres ayudar con una traducción?

En la ayuda del programa están las instrucciones necesarias para generar nuevas traducciones. Si te animas, basta con descargar el fichero original de la traducción y una vez generada una nueva traducción la puedes añadir directamente al directorio de Languages incluido con la aplicación. Además, si me la envías la incluiré en la siguiente versión.

 

Categories: Aplicación, Delphi Tags: , ,

Función OutputDebugString: Un avance en tu código

miércoles, 12 de marzo de 2025 2 comentarios
Share Button

Muchos de vosotros seguro que ya habéis utilizado esta función de Windows durante el desarrollo y prueba de nuestros programas. Para los que no la habéis utilizado, la definición formal podría ser la siguiente:

«OutputDebugString es una función de la API de Windows que permite enviar mensajes de depuración al visor de depuración de Windows. Estos mensajes pueden ser utilizados para realizar depuración y diagnóstico de aplicaciones en tiempo de ejecución.»

Seguro que todos, en algún momento de nuestra vida como programadores, hemos utilizado un ShowMessage en nuestro programa para mostrar una información de debug (o de log) por pantalla. Esto tiene sus inconvenientes y riesgos, como que en un momento dado se nos haya escapado uno de esos ShowMessage y haya acabado en un cliente final Decepcionado .

Para evitar esos posibles problemas podemos utilizar la función OutputDebugString. Desde Delphi basta con añadir la unit Windows a nuestro código para poder utilizarla.

Por ejemplo, si creamos un proyecto de consola como este y lo ejecutamos:

program Project1;
 
{$APPTYPE CONSOLE}
 
{$R *.res}
uses
  Windows, System.SysUtils;
 
begin
  var i:integer;
  while i < 10 do begin
    OutputDebugString(PChar(' ==» Mensaje ' + i.ToString + ' **'));
    Inc(i);
  end;
end.

Aparentemente al ejecutar nuestro programa no pasa nada, y no vemos nada en pantalla, pero si activamos la ventana de Eventos en el IDE (View / Debug Windows / Events  CTRL+ALT+V) debería salir algo como esto:


En el IDE de Delphi disponemos de muchas herramientas para depurar/debuggar nuestros programas y esta es una de ellas, pero ¿qué pasa cuando no disponemos del IDE? (por ejemplo, porque necesitamos probar un programa en un cliente y obtener información de lo que está pasando).

Podemos utilizar alguna de estas herramientas que nos permiten ver los mensajes de debug (generados con OutputDebugString):

La visualización que obtenemos con esta herramientas es la siguiente:

Dentro de las opcines del IDE (Tools/Options/Debugger) podemos realizar modificaciones en lo que se refiere a los mensajes de debug que podemos visualizar dentro de la ventana de Event log.

Por último una recomendación personal. Para evitar que nuestros mensajes de Debug puedan llegar a una versión de cliente, es buena práctica utilizar condicionales en el código, de esta forma podemos asegurarnos que en nuestros ejecutables compilados en DEBUG, sí aparecen los mensajes, pero los compilador en RELEASE (copias finales de cliente) no aparecen.

Símplemente debéis crear un procedimiento como el siguiente:

procedure _DebugStr(const aMensaje:string);
begin
{$IFDEF DEBUG}
  OutputDebugString(PChar(aMensaje));
{$ENDIF}
end;

 

Hasta aquí esta entrada, que está centrada en el uso de la función y en cómo sacarle partido. Más adelante veremos cómo generar código para capturar estos mensajes y mostrarlos donde nos interese, e incluso una aplicación «a medida» que se ajuste a lo que necesitamos.

Referencias:

Un saludo y hasta la próxima.

 

 

Categories: API, Código, Debug, Delphi, OOP Tags: , , , ,