これを2つの部分で解決できました:
1. Tup に正確なパスを使用してもらう
まず、実行可能.o
ファイルが実際の場所にあるファイルを参照するように、Tup を chroot で実行する必要があります (詳細はこちらとドキュメントを参照)。c
これは、Tup コマンドでキャレットの後に置くことによって行われます。
だから私のビルドコマンドは次のようなものから来ました
: foreach code/*.cpp |> ^o compile %f^ $(COMPILER) $(COMPILER_FLAGS) %f -o %o |> %B.o {code_object_files}
に
: foreach code/*.cpp |> ^oc compile %f^ $(COMPILER) $(COMPILER_FLAGS) %f -o %o |> %B.o {code_object_files}`
これにより、実行可能ファイルへの正しいパスが取得されましたが、.o
ファイルはメイン ディレクトリではなく、ビルド サブディレクトリにあるかのようにソース ファイルを参照していたため、次のようになりました。
2. ソースを探す場所を LLDB に伝える
そのため、LLDB はソースが にあると考えていますが、/Users/leo/project/subdirectory/code
実際には にあり/Users/leo/project/code
ます。これは、この質問に従って、あるパスを別のパスに置き換えるように LLDB に指示することで解決されます。
(lldb) settings set target.source-map /Users/leo/project/subdirectory /Users/leo/project
(これは相対パスでは機能しないようでした。これは、開発マシンごとのソリューションが必要であることを意味するため、残念です。プロジェクトがどこにあるかに関係なく機能するソリューションを誰かが知っている場合は、私に知らせてください!)
また、次の行を含むファイルを LLDB ソースにすることで、これを自動化することもできます: lldb -s path/to/lldb/config/file
.