最近、誰かとstraceについて議論していましたが、彼らはネットワークソケットやそのようなものを作成している間に実行中のプロセスを追跡するとどうなりますか?これにより、プログラムが予期しない方法でクラッシュする可能性がありますか?
ptrace(straceで使用されるシステムコール)について読んだことによると、スレッドをデバッグするだけで同様の状況が発生してはいけません。システムコールが呼び出されるたびにプロセスは停止しますが、後で再起動する必要があり、もはや賢明ではありません。シグナルは実行されていないときにキューに追加されるため、システムコール/ソケット/リスナーでも同様のことが起こるとします。
straceコンテキストでptraceを使用すると、奇妙なプロセスクラッシュが発生しますか?
ベストアンサー1
いいえ、strace
プログラムの競合を引き起こすべきではありません。 -
とは別にやや珍しい場合:
依存性がある場合実行時間またはランタイムメモリ位置。
この問題が発生する可能性があります」ハイゼンベルク" - しかし、非常にまれです。このバグは非常にまれであるため、straceや他のツールでのみトリガーすることができます。
ptrace()
システムコールに関しては、strace
私が思っていたのと同じで似ています。strace
自分で使うよりも多くのことができますptrace()
。
あなたの例では、エラーは次のとおりです。
この例では、strace
ネットワーク接続を作成するステップのタイミングを変更します。これにより問題が発生した場合、「発生を待つ問題」です。実行時点が変更され続けます。はいstrace
、もう少しすればいいです。ただし、ランチャーなどの他のアプリケーションでは、時間をさらに変更できます。