Será que o `dtruss -p PID` lista as chamadas feitas antes do dtruss ser executado?

0

Estou tentando diagnosticar um comando intermitentemente lento. Quando executo o comando e o vejo pendurado, pressiono control + t para obter o PID, depois, em outra guia, corro diagnose [PID] - por exemplo, diagnose 123. Eu defini diagnose como uma função na minha configuração 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, desde que eu estou reagindo quando noto um jeito, eu corro diagnose vários segundos após o início do processo. A saída lista muitas chamadas do sistema, mas eu me pergunto se estou perdendo alguma coisa importante.

Faz dtruss listar comandos retroativamente? Em outras palavras, a saída de dtruss -p [PID] incluem chamadas do sistema feitas por esse processo antes dtruss foi executado?

Nathan Long
fonte

Respostas:

1

Não

Acabei de fazer uma experiência para testar isso. Eu escrevi e executei este script 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')

Depois que começou, eu corri diagnose no seu PID, como descrito acima. Eu só vi uma chamada para open:

20309/0x4a7118:     34082      41     34 open("/tmp/baz.txt\0", 0x1000000, 0x1B6)        = 7 0
Nathan Long
fonte