Não , strace
não deve causar uma falha no programa -
Exceto neste caso incomum:
Se houver um bug que dependa do tempo de execução ou dos locais de memória de tempo de execução .
Isso pode desencadear esse tipo de " heisenbug " - mas extremamente raramente, porque esse tipo de bug é raro e precisa ser acionado apenas sob strace ou outra instrumentação. E quando você encontra um heisenbug, geralmente é uma coisa boa.
Em relação ao ptrace()
- o syscall - que é exatamente o que o strace
faz por dentro, eu acho, então é similar. É possível fazer mais do que strace
ao usar ptrace()
diretamente.
Seu exemplo seria apenas esse tipo de bug:
No exemplo, strace
alteraria o tempo das etapas para criar uma conexão de rede. Se isso causa um problema, era um "problema esperando para acontecer" - o tempo de execução muda constantemente. Com strace
, só um pouco mais. Mas qualquer outro aplicativo poderia ter mudado mais o tempo, como iniciar um programa.