¿'dtruss -p PID' lista las llamadas al sistema realizadas antes de que se ejecutara dtruss?

0

Estoy intentando diagnosticar un comando lento intermitente. Cuando ejecuto el comando y lo veo colgado, presiono control + t para obtener el PID, luego en otra pestaña, ejecuto diagnose [PID] , por ejemplo, diagnose 123 . He definido diagnose como una función en mi configuración zsh:

# See system calls of the process with a given PID
function diagnose() { sudo dtruss -cade -p "$1" 2>&1 | tee /tmp/dtruss_output }

Obviamente, ya que estoy reaccionando cuando noto un bloqueo, ejecuto diagnose varios segundos después de que comenzó el proceso. La salida enumera muchas llamadas al sistema, pero me pregunto si me estoy perdiendo algo importante.

¿Dtruss lista los comandos de forma retroactiva? En otras palabras, ¿la salida de dtruss -p [PID] incluye las llamadas al sistema realizadas por ese proceso antes de que se ejecutara dtruss ?

    
pregunta Nathan Long 17.02.2015 - 13:14

1 respuesta

1

No

Acabo de ejecutar un experimento para probar esto. Escribí y ejecuté este script de Ruby:

puts "going to read foo"
puts File.read('/tmp/foo.txt')

sleep 5
puts "going to read bar"
puts File.read('/tmp/bar.txt')

sleep 5
puts "going to read baz"
puts File.read('/tmp/baz.txt')

Después de que comenzó, corrí diagnose en su PID, como se describe anteriormente. Solo vi una llamada a open :

20309/0x4a7118:     34082      41     34 open("/tmp/baz.txt
puts "going to read foo"
puts File.read('/tmp/foo.txt')

sleep 5
puts "going to read bar"
puts File.read('/tmp/bar.txt')

sleep 5
puts "going to read baz"
puts File.read('/tmp/baz.txt')
", 0x1000000, 0x1B6) = 7 0
    
respondido por el Nathan Long 17.02.2015 - 13:20

Lea otras preguntas en las etiquetas