Pixar USDをXcodeでデバッグ実行する

前回の続き。ここにXcodeでのデバッグ手順を記す。

環境

以下の環境で確認している。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ uname -m
arm64

$ sysctl -n machdep.cpu.brand_string
Apple M1 Max

$ sw_vers
ProductName:	macOS
ProductVersion:	12.6.3
BuildVersion:	21G419

$ xcodebuild -version
Xcode 14.2
Build version 14C18

$ which -a clang
/usr/bin/clang

$ /usr/bin/clang --version
Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: arm64-apple-darwin21.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Xcodeでのデバッグ手順

XcodeでUSDのコードをデバッグするまでの手順を示す。

Xcodeプロジェクトの生成

build_scripts/build_usd.py の引数 generatorXcode を指定するとXcodeプロジェクトの生成と併せてCMakeのビルドが始まる。

1
python build_scripts/build_usd.py --generator Xcode ./xcode

デバッグの場合は --build-variantdebug を指定する。以下に実行例を示す。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
$ python build_scripts/build_usd.py --build-variant debug --generator Xcode ./xcode

Building with settings:
  USD source directory          /Users/hiroakit/workspace/PixarUSD
  USD install directory         /Users/hiroakit/workspace/PixarUSD/xcode
  3rd-party source directory    /Users/hiroakit/workspace/PixarUSD/xcode/src
  3rd-party install directory   /Users/hiroakit/workspace/PixarUSD/xcode
  Build directory               /Users/hiroakit/workspace/PixarUSD/xcode/build
  CMake generator               Xcode
  CMake toolset                 Default
  Downloader                    curl

  Building                      Shared libraries
    Variant                     Debug
    Target                      native
    Imaging                     On
      Ptex support:             Off
      OpenVDB support:          Off
      OpenImageIO support:      Off 
      OpenColorIO support:      Off 
      PRMan support:            Off
    UsdImaging                  On
      usdview:                  On
    Python support              On
      Python Debug:             Off
      Python 3:                 On
    Documentation               Off
    Tests                       Off
    Examples                    On
    Tutorials                   On
    Tools                       On
    Alembic Plugin              Off
      HDF5 support:             Off
    Draco Plugin                Off
    MaterialX Plugin            Off

  Dependencies                  zlib, boost, TBB, OpenSubdiv
STATUS: Installing zlib...
STATUS: Installing boost...
STATUS: Installing TBB...
STATUS: Installing OpenSubdiv...
STATUS: Installing USD...

Success! To use USD, please ensure that you have:

    The following in your PYTHONPATH environment variable:
    /Users/hiroakit/workspace/PixarUSD/xcode/lib/python

    The following in your PATH environment variable:
    /Users/hiroakit/workspace/PixarUSD/xcode/bin

build_scripts/build_usd.py の処理が完了したら、 xcode/build/PixarUSD/usd.xcodeproj の存在を確認する。

Xcodeプロジェクトのスキーマ設定

xcode/build/PixarUSD/usd.xcodeproj を開くと以下の設問がある。どちらを選択しても良い。ここでは Automatically Create Schemes を選ぶ。

./images/figure_usd_xcode_debug_01.png

スキーマの一覧から install を選ぶ。

./images/figure_usd_xcode_debug_02.png

Xcodeでビルド

スキーマ install をビルド (Command + b) する。

./images/figure_usd_xcode_debug_03.png

Xcodeでデバッグ実行

例としてコマンド usdcat をアタッチしてデバッグする。

usdcat のソースコード usdcat.cpp を開きmain関数があるL317にブレイクポイントを置く。ファイルはXcodeのProject Navigator (Command + 1)にあるツリーからusd (プロジェクト) > pxr > usd > usdcat > Source Filesと辿ったところにある。

./images/figure_usd_xcode_debug_04.png

Debug にある Attach to Process by PID or Name... をクリックする。

./images/figure_usd_xcode_debug_08.png

usdcat を指定してAttachボタンをクリックする。

./images/figure_usd_xcode_debug_09.png

そうするとXcodeが usdcat のプロセスが立ち上がるまで待機する。

./images/figure_usd_xcode_debug_10.png

その後、ターミナルで xcode/bin/usdcat を実行するとブレイクポイントで止まる。

./images/figure_usd_xcode_debug_11.png

余談

Xcodeでスキーマ usdcat でビルドすると、スキーマ install との rpath の違いから動作に差がある。当記事のようにスキーマ install でビルドしたものをアタッチしてデバッグするのが現時点では無難だと思う。