2

サンドボックスを有効にするために、この Apple チュートリアルを実行しています。Xcode プロジェクトの作成、アプリ サンドボックスの有効化、証明書の作成、コード署名 ID の指定、およびアプリがサンドボックス化されていることの確認というセクションを正常に完了しました。

その後、意図的な違反を診断しようとすると、ガイドに記載されているようにコンソールに何も表示されません。[アプリのサンドボックスを有効にする] はオンになっていますが、その下には何もありません (例: 送信接続を許可する)。権利ファイルは、サンドボックスが有効になっていることを示しており、アプリは Apple の Web サイトを表示しておらず、アクティビティ モニターはアプリがサンドボックス化されていることを示しています。

を使用しConsole.appて、すべてのメッセージを確認しています (チュートリアルの「アプリ サンドボックス違反を診断するには」セクションで説明されているように)。からのメッセージが表示されることを期待していますがsandboxd、サンドボックスに関連するものは表示されません。アプリケーション自体は、チュートリアルで説明したとおりに動作し、サンドボックス化されていない場合は Apple Web サイトを表示し、サンドボックス化されている場合は表示しません。

私は Mac OS 10.8.2、Xcode 4.5.1 を使用しています。私は何が欠けていますか?

4

1 に答える 1

2

Xcode 5.1を使用した10.9.2でもこれを経験しましたが、最近はOSとXcodeのバージョンが無関係であると確信しています(10.5と同じくらい古いものを使用している場合は問題になる可能性があります)。私の場合、実際の/var/log/system.logファイルにはsandboxdメッセージが表示されますが、「すべてのメッセージ」クエリには表示されないため、チュートリアルで説明した「完全なレポート」ボタンにアクセスできませんでした。

私の特定のマシンでは、管理者ユーザーとしてログインした場合(システムには通常と管理者/ルートの2人のユーザーがいます)、「すべてのメッセージ」にログメッセージが表示されることがわかりました。 sandboxd メッセージを調べて、それらが UID=0 で送信されていることを確認できます。それがどのように制御されているのかはわかりません (なぜ私たちだけに影響するのに、他の人は問題ないのでしょうか?)、root でない場合、コンソールは root に送信された/root によって送信されたメッセージをシステム ログに表示しないようです。あなた自身。

これはハックな解決策につながります: root としてコンソールを起動します。

これを行うには、ターミナルで次のように入力します。

sudo -b /Applications/Utilities/Console.app/Contents/MacOS/Console 

これで、そのコンソールを使用してすべてのメッセージを表示できるようになります。

--

これを理解している間、構成ファイルのログ記録がどのように私を傷つけているのかを理解しようとして行き止まりになりました。それらは私には無関係であることが判明しましたが、最終的にはあなたを助けるかもしれません:

調査の結果、誰かが同様の問題を経験していて、原因がフィルタリング/etc/asl.confまたは/etc/syslog.conf

また、ロギングとフィルタリングに関する Apple のドキュメントを見つけましたLogging Errors and Warnings: Messages arefiltered

/var/log/system.logにsandboxdメッセージが表示されない場合は、.confファイルをいじる必要があるかもしれませんが、そこに表示される場合、問題はおそらくそれらとは関係ありません. 私の場合、それらは行き止まりであり、「ルートとして起動」ソリューションに出くわす前に、このルートをたどるのに数時間を費やしました。

于 2014-03-15T02:47:29.643 に答える