3

google-toolbox-for-mac から iPhone ユニット テスト フレームワークをセットアップしようとしています。簡単な単体テストを作成してビルドしようとすると、次のエラーが表示されます。私の同僚は、同じプロジェクトを使用して、自分のマシンで正常にビルドできます。私の人生では、何が欠けているのかわかりません。以下は、私が見るエラーメッセージです。誰にも洞察がありますか?

あなたに属する一致するプロセスは見つかりませんでした

mkdir(1073) malloc: エッジの保護

mkdir(1073) malloc: 標準レコーダーを使用して malloc スタックをディスクに記録する

mkdir(1073) malloc: ブロックを解放する mod を検出するための落書きを有効にします

mkdir(1073) malloc: プロセス 1059 が存在しなくなり、スタック ログが /tmp/stack-logs.1059.mkdir.QDKY28.index から削除されました

mkdir(1073) malloc: /tmp/stack-logs.1073.mkdir.KrpE2L.index に書き込まれるスタック ログ

iPhone に存在しないシステム ライブラリ内のシンボルを呼び出そうとする試みが検出されました: getopt$UNIX2003 が関数から呼び出されました ??? イメージmkdirにあります。

gdb 内でシミュレータ バイナリを実行しているときにこの問題が発生した場合は、最初に「start-with-shell をオフに設定」してください。

/Developer/google-toolbox-for-mac/UnitTesting/RunIPhoneUnitTest.sh: 150行目: 1073 Abort trap mkdir "$CFFIXED_USER_HOME"

コマンド /bin/sh が終了コード 134 で失敗しました

4

2 に答える 2

2

google-toolbox/UnitTesting/RunIPhoneUnitTest.sh スクリプトのバグのようです。行の後のすべて: export DYLD_ROOT_PATH="$SDKROOT" 「iPhone モード」で実行されます。古い 32 ビット iMac では、/bin/mkdir は、iPhone では利用できない getopt$UNIX2003 システム コールを使用しているようです。したがって、次の行は失敗します: mkdir "$CFFIXED_USER_HOME". 新しい 64 ビット Mac では、/bin/mkdir は iPhone モードと互換性があります。

修正は、 で始まるコードのセクションをパーツ (および行)のif [ $GTM_DISABLE_USERDIR_SETUP -eq 0 ]; then前に移動するだけです。export DYLD_ROOT_PATHexport CFFIXED_USER_HOME

ところで、SDK にはシステム ライブラリ libc、libSystem などのラッパー バージョンがあり、使用されているシステム コールが iPhone で利用できるかどうかを確認します。それが、上記の「iPhone モード」の意味です。

于 2010-12-22T13:35:12.183 に答える
0

あなたの同僚は、$UNIX2003 シンボル装飾を受け入れる古いバージョンの iOS SDK を使用しているようです。以前の OS 用にコンパイルされたバージョンの libCURL を使用しようとしたときに、同様の問題が発生しました。最後に、最新の SDK ツール (詳細はこちら: http://www.creativealgorithms.com/blog/content/building-libcurl-ios-42 )を使用して libCURL を再構築する必要がありましたが、次の方法で回避できる場合があります。同僚と同じ SDK を使用する (まだ利用可能な場合)。

于 2010-12-09T20:36:07.470 に答える