2009-06-23 56 views
24

在我的程序中,我需要創建套接字並將它們綁定爲偵聽HTTP端口(80)。當我使用sudo從命令行啓動它時,該程序正常工作,將權限升級到root。在XCode下運行時,會在調用綁定函數(asio :: ip :: tcp :: acceptor :: bind())時出現「權限被拒絕」錯誤。在XCode中作爲根進行調試

如何在XCode下進行調試?

所有使用C++和boost.asio在Mac OS X 10.5上使用XCode 3.1.2完成。

回答

23

更新:對於Xcode 4.5及更高版本,請參閱this answer


我意識到要做你所要求的唯一方法就是以root身份運行Xcode。

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

一旦你以root運行,在Xcode推出什麼過程也將作爲root運行。但是,請注意,如果您創建或編輯任何文件,它們將歸root所有,這意味着您必須先將它們編輯爲chown,然後才能以普通用戶身份編輯它們。

我很想讓Xcode說「以root身份啓動進程」,但據我所知,沒有這樣的功能可用。

請注意,您也可以在命令行調試程序gdb內運行該應用程序來調試您的應用程序。運行

​​

然後,你可以保持Xcode中打開,修改隨意和gdb中調試程序。這是我通常所做的。

編輯:來自未來的讀者:請參閱Alexander Stavonin的回答;它談論如何做到這一點。如果您使用ssh密鑰並在系統上啓用root用戶,他的答案就是要走的路。

+0

謝謝,但文件所有者的這個問題真的很煩人。 – Anton 2009-06-23 15:03:12

+0

不幸的是,亞歷山大的方法似乎不適用於XCode4,所以這個答案中的sudo方法似乎是唯一可行的方法。 – JosephH 2012-01-16 12:53:58

0

通過SSH作爲根進行調試。

編輯活動可執行文件 - >調試 - >通過SSH遠程調試可執行文件。

+0

我無法讓它工作。我在本頁上設置的內容:使用「GDB」時使用「Pipe」作爲標準輸入/輸出,「Checked」通過SSH遠程調試可執行文件,連接到:「[email protected]」,「Unchecked」開始調試器。 當我運行我的應用程序時,它顯示SSH對話框,但輸入密碼作爲密碼給出「驗證失敗」。我也嘗試使用我的用戶名,但它不起作用。而且,順便說一句,該應用程序不會啓動。 我在做什麼錯? – Anton 2009-11-21 12:07:13

13

Xcode能夠以root身份運行調試應用程序。爲此,應完成以下步驟:

  1. 爲本地計算機啓用root用戶。

    a。運行「目錄實用程序」(/ System/Library/CoreServices/Directory Utility.app)

    b。從編輯菜單中選擇「啓用Root用戶」並輸入root密碼。

  2. 啓用遠程登錄。

    a。在系統偏好設置... - >共享中,選中遠程登錄。該選項打開ssh惡魔。

  3. 爲root用戶創建ssh公鑰/私鑰並複製.ssh/authorized_keys文件夾中的公鑰。

    a。在本地機器上打開終端並鍵入ssh-keygen -t rsa

    b。接受默認位置併爲根鍵入密碼。

    c。以根用戶登錄su -並創建〜/ .ssh目錄。 (〜==/var/root)

    d。將公鑰複製到根:cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> ~/.ssh/authorized_keys"

    e。檢查一切是否正常。類型ssh [email protected]。它不應該要求輸入root密碼。

  4. 在Xcode中啓用通過ssh進行遠程調試。

    a。從«可執行文件»的下拉菜單中選擇«獲取信息»。

    b。在「調試」設置中,選中「通過ssh遠程調試可執行文件」,然後將root @ localhost作爲「連接到」信息。

  5. 一切都應該是好現在☺

From blog

+0

看來我無法在Xcode4上找到«通過ssh遠程調試可執行文件»。是嗎? – 2011-10-13 15:02:56

0

如果要調試Web服務器端口443上運行,則可以改爲在端口8443上您的正常帳戶運行它,然後做一個: sudo ssh user @ localhost -L 443:localhost:8443 -N

然後你仍然可以在正確的端口上聯繫你的應用程序,但具有以普通用戶身份運行應用程序的優點。

2

XCode不再支持遠程調試渲染,大多數這些答案已過時。

以root身份調試程序,現在很容易。在產品菜單下,使用「編輯方案...」,在「運行」方案「信息」窗格中,選擇「以root身份執行調試過程」。你將不得不認證一次。

從Xcode 4.5開始,我得到一個奇怪的錯誤,直到我非常Xcode並重新啓動。

21

在Xcode的4.5 產品 - >編輯方案:尋找下調試過程中信息標籤作爲並選擇選項。