strace comando tutorial de Linux

  
 

comando strace es una poderosa herramienta que puede mostrar todos los sistemas emitido por una llamada a un programa de espacio de usuario. strace visualizar estas llamadas y devuelve el valor en forma simbólica. kernel strace recibe información de, y no requiere de ninguna manera especial para construir el núcleo. Los siguientes registros de varias opciones de uso común. 1 opción -f -F le dice a strace mientras que el seguimiento tenedor y vfork a cabo el proceso de salida de 2 -o xxx.txt en un archivo. 3 -e execve sólo los registros execve este tipo de llamada y mdash sistema; — — — — — — — — — — — — — — — — el proceso no puede iniciarse, el software acelerar repentinamente ralentizado, programa y " SegmentFault y " también lo son el sistema Unix para que cada usuario difícil problema, este trabajo tres ejemplos prácticos muestran cómo utilizar armadura, strace y ltrace tres herramientas de depuración comunes para diagnosticar rápidamente software " ". enfermedades incurables cercha y strace para rastrear el sistema llama un generador de proceso o de la señal, que se utiliza para realizar el seguimiento del proceso de llama a la situación ltrace funciones de biblioteca. braguero pronto como System V R4 desarrollar depurador, la mayoría de los sistemas Unix, incluyendo Aix, FreeBSD, incluyendo todo viene con esta herramienta, y strace escritos originalmente para el sistema SunOS, ltrace aparecieron por primera vez en GNU /DebianLinux en. Ambas herramientas Ahora también se han portado a la mayoría de los sistemas Unix, la mayoría de las distribuciones de Linux viene con strace y ltrace, pero también puede ser instalado por FreeBSD. No sólo se puede programar una nueva depuración inicio de la línea de comandos, también puede poner braguero, strace o ltrace unido a un PID existentes hasta un depurador en marcha. Básica herramienta de depuración uso de tres de la misma, aquí no son sólo tres, y tres son los parámetros de línea de comandos más comúnmente utilizados: -f: Además del seguimiento del proceso actual, sino también realizar un seguimiento de sus hijos. -o archivo: archivo se escribe en el archivo de salida en lugar de a la salida de error estándar (stderr). -p pid: se unen a un proceso en ejecución corresponde a la pid. Este parámetro se utiliza para depurar un proceso en segundo plano. El uso de los tres parámetros anteriores, básicamente, se puede realizar la mayoría de tareas de depuración, la línea de comandos He aquí algunos ejemplos: cercha -o ls.truss ls -al: ls -al pista de atletismo, la información se escribe en el archivo de salida /tmp /ls.truss en. strace -f -o vim.strace vim: vim seguimiento y ejecutar sub-proceso, la información se escribe en el archivo de salida vim.strace. ltrace -p 234: seguimiento de un pid ya se está ejecutando procesos 234. El formato de salida de tres herramienta de depuración es también muy similar a strace Ejemplo: brk (0) = 0 &veces; 8062aa8 brk (0 &veces; 8.063.000) = 0 &veces; 8063000 mmap2 (NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0 &veces; 92f ) = 0 &veces; 40016000 cada fila es una llamada al sistema, a la izquierda del signo igual es el nombre de la función de la llamada al sistema y sus parámetros, el valor de retorno a la derecha de la llamada. braguero, strace y ltrace funciona casi de la misma, están en el proceso de puesta en servicio de seguimiento de llamadas utilizando el sistema ptrace, principio detallada no está dentro del alcance de este artículo, está interesado puede referirse a su código fuente. Dos ejemplos muestran cómo utilizar estas herramientas de depuración de tres software de diagnóstico y " ": enfermedades incurables Caso uno: Ejecutar error de Clint Segmento Hay una plataforma
: Clint-5.2.1-release FreeBSD es herramienta de análisis estático de código fuente de C ++ y, a continuación, instala de Puertos, ejecute: # fallos Clint foo.cpp Segmentación (core dumped) se reunió en sistemas Unix " Segmentación de fallos y " basta con meter en la EM Windows
en y " operación ilegal y " como de diálogo molesto. OK, usamos armadura Clint y " Baba Mai y ": # cercha -f -o clint.truss Clint Segmentation fault (core dumped) # tail clint.truss 739: leer (0 &veces; 6,0 y tiempos; 806f000,0 y tiempos; 1000) = 4096 (0 &veces; 1000) 739: fstat (6,0xbfbfe4d0) = 0 (0 &veces; 0) 739: fcntl (0 &veces; 6,0 &veces; 3,0 &veces; 0) = 4 (0 &veces; 4) 739: fcntl (0 &veces; 6,0 y tiempos; 4,0 y veces; 0) = 0 (0 &veces; 0) 739: cierre (6) = 0 (0 &veces; 0) 739: stat (y " /root/.clint/plugins", 0xbfbfe680) ERR # 2 ‘ No existe el fichero o directorio y rsquo; SEÑAL 11 SEÑAL 11 proceso detuvo a causa de: 16 de salida del proceso, rval = 139 que utiliza la aplicación de la llamada de sistema de vigas pista Clint y envía el resultado a un clint.truss archivo, a continuación, ver con la cola las últimas líneas. Tenga en cuenta la ejecución de Clint de la última llamada al sistema (quinta línea de la parte inferior): stat (y " /root/.clint/plugins", 0xbfbfe680) ERR # 2 ‘ No existe el fichero o directorio y rsquo;, el problema se encuentra aquí: Clint encontrar menos de catálogo y " /root/.clint/plugins", causando un fallo de segmentación. ¿Cómo resolver? Es simple: mkdir -p /root/.clint/plugins, pero esto todavía se ejecutará Clint y " Segmentación de fallos y " 9. Seguir utilizando la pista cercha, Clint también tienen que encontrar el directorio y " después /root/.clint/plugins/python", construyó este directorio Clint finalmente capaz de funcionamiento normal. Caso II: vim inicio fue más lento sistema operativo: 5.2.1-release-FreeBSD vim versión 6.2.154, vim ejecutar desde la línea de comandos, que esperar cerca de medio minuto para entrar en la interfaz de edición, y ninguna salida de error. Examinado la .vimrc y todos los scripts de configuración de vim hay errores, Internet no puede encontrar soluciones a problemas similares, ¿Quieres que la piratería código fuente? No es necesario, con la armadura será capaz de encontrar el problema: # cercha -f -D -o vim.truss vim -D parámetros de efectos aquí son: más de tiempo relativo en cada línea de salida antes, es decir, cada implementación de un costo de llamada al sistema tiempo. Mientras nos centramos en lo que las llamadas al sistema gastan mucho tiempo en ella, mira el vim.truss archivo de salida con menos cuidado, encontró rápidamente a dudas: 735: 0.000021511 zócalo (0 y tiempos; 2,0 y veces; 1,0 y veces; 0) = 4 (0 &veces; 4) 735: 0.000014248 setsockopt (0 &veces; 4,0 y 6,0 veces; y veces; 1,0xbfbfe3c8,0 y veces; 4) = 0 (0 &veces; 0)

Copyright © Conocimiento de Windows All Rights Reserved