GNU/Linux >> Tutoriales Linux >  >> Linux

¿Números de línea de origen en el gráfico de llamadas de rendimiento?

Accidentalmente lo encontré vagamente documentado en perf script , pero también se aplica a otros comandos:-F la opción acepta srcline . Entonces puedes hacer -F+srcline para agregar el número de línea a las columnas existentes.

Ejemplo:perf report -g fractal -F+period,srcline

Samples: 22K of event 'cycles:u', Event count (approx.): 13031011295
  Children      Self        Period  Source:Line                           Command  Shared Object        Symbol
+   99.98%    38.76%    5051224000  test.cpp:7                            a        a                    [.] fib
+   96.42%     0.00%             0  _start+94372992700461                 a        a                    [.] _start
+   96.42%     0.00%             0  __libc_start_main+140304673091826     a        libc-2.29.so         [.] __libc_start_main
+   96.42%     0.00%             0  test.cpp:13                           a        a                    [.] main
+   21.47%    21.47%    2797741850  test.cpp:8                            a        a                    [.] fib
+   16.69%    16.69%    2174469736  test.cpp:4                            a        a                    [.] fib
+   16.37%    16.36%    2132462705  test.cpp:6                            a        a                    [.] fib
+    6.69%     6.69%     871128215  test.cpp:5                            a        a                    [.] fib

Perf imprime fragmentos (líneas completas) del código fuente en modo de anotación (página del manual; parte relevante de The Perf Tutorial). Usa perf annotate -s=MyFunction o en perf report desplácese hacia abajo hasta el subárbol donde MyFunction es la raíz del árbol (línea donde se informa el tiempo propio; puede usar / comando para buscarlo) y luego seleccione a botón (o Intro luego anote "MyFunction").

El código fuente y sus líneas deben estar visibles cerca de las líneas de ensamblaje en el modo de anotación. http://man7.org/linux/man-pages/man1/perf-annotate.1.html

Este comando lee el archivo de entrada y muestra una versión anotada del código. Si el archivo de objeto tiene símbolos de depuración, el código fuente se mostrará junto con el código ensamblador.

   -l, --print-line
       Print matching source lines (may be slow).
  --source
      Interleave source code with assembly code. Enabled by default,
       disable with `--no-source`.
   -s, --symbol=<symbol>
       Symbol to annotate.

El informe de rendimiento puede usar srclines en la clasificación (--sort= opción) pero las instrucciones no son claras. Su página man documenta --source opción también, pero aparentemente solo se usa en el modo Anotar alguna_función:http://man7.org/linux/man-pages/man1/perf-report.1.html

  --source
       Interleave source code with assembly code. Enabled by default,
       disable with --no-source.

Linux
  1. Códigos de salida de la línea de comandos de Bash desmitificados

  2. ¿Grep para una línea que contiene solo 5 o 6 números?

  3. utilidad de línea de comandos para imprimir estadísticas de números en Linux

  4. ¿Dónde puedo encontrar el código fuente de la llamada al sistema?

  5. ¿Dónde está el código del programador de Linux CFS?

Cómo mostrar números de línea en Vim / Vi

Conceptos básicos de la compilación de software a partir del código fuente en Linux

Ohcount:el contador y analizador de líneas de código fuente

¿Eliminar el código fuente de Ppa?

Cómo mostrar u ocultar números de línea en Vim

Cómo mostrar números de línea en Gedit