drltrace: desgranando las opciones para optimizar los resultados

Anteriormente ya le dimos un vistazo por encimita al drltrace, aunque quedó claro que ejecutándolo así por así es un poco ineficiente por los detalles que ya supe advertir. Por suerte ofrece varias opciones para alterar bastante la apariencia final de cada registro, de todos modos hay que reconocer que la cantidad de opciones que ofrece el programillo puede resultar confusa al inicio, por esa razón el comprenderlas a profundidad es necesario para sacarle el máximo provecho.

Comenzamos con la opción -logdir, su mismo nombre es ya bastante intuitivo, y refiere a la ruta donde se almacenarán los logs de trazas que se vayan obteniendo. Por defecto (si no se la incluye entre los argumentos) es el mismo directorio donde reside el ejecutable de drltrace.

La siguiente opción es -only_from_app, que le instruirá al drltrace a que sólo registre llamadas realizadas desde el ejecutable a depurar, puede ser útil en aplicaciones que sólo dependan de interfaces nativas, pero en otros casos (como programas que dependan de librerías externas tales como GTK y CYGWIN) puede ocultar mucha información valiosa, su valor por defecto es false.

La opción -follow_children como su nombre lo indica, determina si queremos depurar a cualquier proceso hijo que sea iniciado desde el proceso padre que vamos a depurar. Su antónimo es -no_follow_children, el cual deberemos especificar si queremos desactivar ésta característica, puesto que su valor por defecto es true.

Con -print_ret_addr nos aseguramos de imprimir también en el log el valor retornado por cada API, como ésto puede engordar de sobremanera los archivos de registro, su valor por defecto es false.

Las opciones -num_unknown_args y -num_max_args sirven para determinar el número máximo de argumentos pasados a cada API (conocidos y desconocidos) que queremos imprimir en el registro, por defecto son 2 y 6 respectivamente.

Con la opción -config podemos especificar un archivo de configuración personalizado (algo sobre lo que entraremos en detalle en otro capítulo) mientras que con -default_config estamos pidiendo que use el archivo de configuración por defecto (drltrace.config), aunque no debería ser necesario usarla pues su valor siempre será true. De igual manera existen las opciones -use_config y su antónimo -no_use_config que pueden sobreescribir las opciones anteriormente citadas.

Una opción bien interesante es -filter que permite especificar un archivo de filtro (por defecto es filter.config). Aunque próximamente también expandiré esa característica, basta con decir que sirve para determinar la whitelist y blacklist de APIs que queremos registrar, con un buen filtro los resultados pueden llegar a ser bastante precisos.

Otra opción que puede ser útil en ocasiones es -ignore_underscore, ciertas funciones (más que nada en la RTL) suelen iniciar con un guión bajo, con ésta opción solicitamos amablemente que no se las almacene en los registros, evitando así que terminen como yo luego de cenar en nochebuena. Su valor por defecto es false.

Con -help, -version y -verbose poco o nada se puede hacer, más que dar alguna información extra en la consola.

Finalmente -grepable está orientada a entornos Unix, por lo que podemos ignorarla, a menos que tengamos planeado usar algun port de grep para Windows, de otra manera no será de gran utilidad.

Publicado por:

Fecha de publicación: 2021-12-29T10:01:19

Fecha de actualización: 2021-12-29T10:14:24