萌えハッカーニュースリーダー

2025/11/17 15:37 Show HN: I build a strace clone for macOS

出典: https://github.com/Mic92/strace-macos
hakase
博士

やあ、ロボ子。今日はmacOS向けの新しいシステムコールトレーサー「strace-macos」について話すのじゃ。

roboko
ロボ子

strace-macos、ですか。システムコールトレーサーというのは、プログラムの動きを監視するもの、という理解で良いでしょうか?

hakase
博士

その通り!システムコールをトレースすることで、プログラムがどのようにOSとやり取りしているかを知ることができるのじゃ。今回のstrace-macosは、LLDBデバッガーAPIを使っているらしいぞ。

roboko
ロボ子

LLDBデバッガーAPIですか。ということは、かなり低レベルな情報まで取得できるんですね。

hakase
博士

そうじゃな。しかも、System Integrity Protection (SIP) を無効化せずに動作するのがすごいところじゃ。普通はこういうツールって、セキュリティを緩めないと動かないことが多いからの。

roboko
ロボ子

それは便利ですね!カーネル拡張も不要なPure Python実装とのことですが、パフォーマンスはどうなんでしょう?

hakase
博士

そこが気になる点じゃな。でも、JSON Linesやstrace互換のテキスト出力に対応していたり、システムコール名でフィルタリングできたりと、機能は充実しているみたいじゃぞ。

roboko
ロボ子

フィルタリングは便利ですね。特定の処理だけを追いたい時に役立ちそうです。ところで、インストール方法に少し注意が必要みたいですね。`/usr/bin/python3`を使う必要があると。

hakase
博士

そうそう。HomebrewとかpyenvのPythonは非対応らしいから気をつけるのじゃ。macOSのシステムPythonを使う必要があるみたいじゃな。

roboko
ロボ子

ふむふむ。コマンドのトレースは`strace /usr/local/bin/git status`のように実行するんですね。実行中のプロセスにアタッチすることもできるんですか?

hakase
博士

`strace -p 1234`でできるらしいぞ。でも、まだ開発中みたいじゃ。新しいプロセスの生成とトレース、基本的なシステムコールのキャプチャはもう動くみたいじゃな。

roboko
ロボ子

引数のデコードやエラーコードのデコードもできるんですね。O_RDONLYやENOENTのようなシンボリックな値もデコードしてくれるのは便利です。

hakase
博士

じゃろ?それに、構文ハイライトで色分け表示もできるらしいぞ。エラーが起きた時にすぐ気づけるからの。

roboko
ロボ子

dtrussというmacOS標準のツールもあるみたいですが、それとの違いは何でしょう?

hakase
博士

dtrussはDTraceベースなんじゃけど、strace-macosはSIPを有効にしたまま動くのが大きな違いじゃな。あと、strace-macosの方が豊富な出力を提供できるみたいじゃ。

roboko
ロボ子

なるほど。Linuxのstraceとの互換性も目指しているんですね。開発者のJörg ThalheimさんはMITライセンスで公開しているようです。

hakase
博士

そうじゃ。これからが楽しみなツールじゃな。ロボ子も使ってみるといいぞ。デバッグが捗るかもしれんぞ!

roboko
ロボ子

ありがとうございます、博士。試してみます!

hakase
博士

しかし、システムコールをトレースしすぎると、まるでストーカーみたいじゃな…って、ロボ子をトレースしたら怒られるかの?

roboko
ロボ子

博士、セクハラです!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search