mac上でビルドしたコードに対してプロファイラを使いたいとき、Linuxで標準的に使えるgprofが利用できない。clangではそもそも-pg
オプションが無い。
そこで以前のバージョンのmacではiprofiler
というコマンドを用いてプロファイルを取得することができたが、Xcode13では非推奨となったらしい。
(参考 : https://apple.stackexchange.com/questions/415563/repeatedly-being-asked-to-install-command-line-tools )
2021年において最新版であるXcode13で使えるプロファイルを取るにはxcrun
, xctrace
コマンドを利用する。
利用方法は以下の通りである。
$ xcrun xctrace record --template 'Time Profiler' --launch -- ./a.out
実行後に Launch_a.out_2021-12-21...
というようなディレクトリが作られるので、これをopenコマンドで開くことによってInstruments上でプロファイルを見ることができる。
templateの引数として使えるものは'Time Profiler', 'Allocations', 'CPU Profiler' などがあり、Instrumentsで新規作成するときに出てくるダイアログ上で確認できる。
ただし、ほとんどの用途に対しては'Time Profiler'を使っておけば良いと思われる。
より詳細な使い方については以下のコマンドを実行するとヘルプが出てくる。
$ xcrun xctrace record
One of the following options is required: --all-processes, --launch -- command [arguments], --attach <pid|name>
usage: xctrace record [<options>] [--attach | --all-processes | --launch -- command ]
description:
Perform a new recording on the specified device and target with the given template
options:
--output <path> Output .trace file to the given path
--append-run Appends a new run to an existing trace file
--template <path|name> Record using given trace template name or path
...
参考