31

私のプログラムでは、ソケットを作成し、それらをバインドして HTTP ポート (80) をリッスンする必要があります。sudo を使用してコマンド ラインから起動すると、プログラムは正常に動作し、アクセス許可がルートにエスカレートされます。XCode で実行すると、バインド関数 (asio::ip::tcp::acceptor::bind()) の呼び出しで「許可が拒否されました」というエラーが発生します。

XCodeでデバッグするにはどうすればよいですか?

XCode 3.1.2 を搭載した Mac OS X 10.5 で、すべて C++ および boost.asio で実行されます。

4

6 に答える 6

27

Xcode 4.5の場合Product-> Edit Scheme: [ Debug Process As ] の下の [ Info ] タブを見て、 rootオプションを選択します。

于 2012-12-28T10:54:53.907 に答える
25

更新: Xcode 4.5 以降については、代わりにこの回答を参照してください。


あなたが求めていることを私が知っている唯一の方法は、Xcodeをルートとして実行することです。

>> sudo /Developer/Applications/Xcode.app/Contents/MacOS/Xcode

root として実行すると、Xcode から起動されたすべてのプロセスも root として実行されます。ただし、ファイルを作成または編集する場合、それらは root によって所有されることに注意してください。つまり、chown最初に通常のユーザーとして編集する前に、それらのファイルを所有する必要があります。

Xcode が「ルートとしてプロセスを起動する」と言う方法が欲しいのですが、私の知る限り、そのような機能は利用できません。

コマンドライン デバッガー内でアプリケーションを実行して、アプリケーションgdbをデバッグすることもできます。走る

>> sudo gdb /path/to/my/application

その後、Xcode を開いたままにして、自由に変更し、gdb 内でプログラムをデバッグできます。これは私が一般的にしていることです。

編集: 未来からの読者: Alexander Stavonin からの回答を参照してください。これを行う方法について説明します。ssh キーに問題がなく、システムで root ユーザーを有効にできる場合は、彼の答えが道です。

于 2009-06-23T14:54:46.337 に答える
15

Xcode は、ルートとしてデバッグ アプリケーションを実行できます。この目的のために、次の手順を実行する必要があります。

  1. ローカル マシンの root ユーザーを有効にします。

    を。「Directory Utility」 (/System/Library/CoreServices/ Directory Utility.app) を実行します。

    b. [編集] メニューから [ルート ユーザーを有効にする] を選択し、ルート パスワードを入力します。

  2. リモート ロギングを有効にします。

    を。システム環境設定… -> 共有で、リモートログインにチェックを入れます。このオプションは、ssh デーモンをオンにします。

  3. ssh 公開/秘密鍵を作成し、root ユーザーの .ssh/authorized_keys フォルダーに公開鍵をコピーします。

    を。ローカル マシンでターミナルを開き、次のように入力しますssh-keygen -t rsa

    b. デフォルトの場所を受け入れ、root のパスワードを入力します。

    c. root としてログインし、su -~/.ssh ディレクトリを作成します。(~ == /var/root)

    d. 公開鍵をルートにコピーします。cat ~/.ssh/id_rsa.pub | ssh root@localhost "cat - >> ~/.ssh/authorized_keys"

    e. すべてが正常かどうかを確認します。タイプしssh root@localhostます。root パスワードを要求するべきではありません。

  4. Xcode で ssh 経由のリモート デバッグを有効にします。

    を。«Executables» のドロップダウン メニューから «Get Info» を選択します。

    b. 「デバッグ」設定で、「ssh を介してリモートで実行可能ファイルをデバッグする」をチェックし、「接続先」情報として root@localhost を入力します。

  5. これですべて問題ありません☺</p>

ブログより

于 2009-12-08T11:02:33.767 に答える
3

XCode はリモート デバッグをサポートしなくなり、これらの回答のほとんどが廃止されました。

root としてプログラムをデバッグするのは簡単です。[Product] メニューで [Edit Scheme…] を使用し、[Run] スキームの [Info] ペインで [Debug process as root] を選択します。一度認証する必要があります。

Xcode 4.5 の時点で、Xcode を終了して再起動するまで奇妙なエラーが発生しました。

于 2012-10-01T20:54:39.490 に答える
0

ポート 443 で実行されている Web サーバーをデバッグする場合は、通常のアカウントのポート 8443 で実行してから、次の操作を実行できます。 sudo ssh user@localhost -L 443:localhost:8443 -N

その後も、適切なポートでアプリケーションに接続できますが、通常のユーザーとしてアプリケーションを実行できるという利点があります。

于 2012-03-14T13:30:11.923 に答える
0

SSH 経由で root としてデバッグします。

アクティブな実行可能ファイルを編集 -> デバッグ -> SSH 経由で実行可能ファイルをリモートでデバッグします。

于 2009-11-20T11:45:19.460 に答える