web-dev-qa-db-ja.com

Mac OSX El Capitanにgdb(デバッガ)をインストールする方法は?

Mac OSX El Capitanにgdb(デバッガー)をインストールする方法は? gdbをインストールしようとしましたが、数回失敗しました。

私はこのURLをたどっていました: http://ntraft.com/installing-gdb-on-os-x-mavericks/ 、MACはMacPortsのインストールを許可しません。

この点で誰も私を助けてください。

40

この回答はMac OS El Capitan向けに書かれていることに注意してください。新しいバージョンの場合、適用されなくなる可能性があることに注意してください。特に、レガシーオプションは廃止される可能性が非常に高いです。

この問題には2つの解決策があり、これらはこの質問に対する他の回答と OSX 10.11 El Capitanでmacportsを使用してgdbを動作させる方法 で言及されていますが、ここで混乱を解消します私の要約です(コメントのために少し長くなったので答えとして):

どちらがより安全であるかは、1)自己署名証明書を信頼するか、2)ユーザーにより多くの特権を与えるかの選択に要約されると思います。

代替方法1:バイナリに署名する

署名の代替を使用する場合、SIPを無効にして-pオプションをtaskgatedに追加する必要はありません。

ただし、この代替方法では、デバッグは_developerグループのユーザーにのみ許可されます。

Codesignを使用して、gdb-certという名前の証明書を使用して署名します。

codesign -s gdb-cert /opt/local/bin/ggdb

(MacPorts標準パスを使用して、必要に応じて採用します)

詳細なコード署名レシピ(証明書の作成を含む)については、以下を参照してください: https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html または- https://sourceware.org/gdb/wiki/BuildingOnDarwin

プロセス中およびプロセス後にキーチェーンアプリケーションとtaskgatedサービスをrestartする必要があることに注意してください(最も簡単な方法は再起動です)。

代替方法2:タスクゲーテッドにレガシーオプションを使用する

@ user14241の回答によると、SIPを無効にし、taskgatedに-pオプションを追加することはオプションです。このオプションを使用する場合は、バイナリへの署名は不要ですであり、Developer Toolsグループ(_developer)のメンバーとして認証するためのダイアログもバイパスします。

Taskpatedに-pオプション(グループprocmodおよびprocviewを許可)を追加したら、gdbの使用を許可するユーザーをprocmod groupに追加する必要もあります。

レシピは次のとおりです。

  1. 復旧モードで再起動し、ターミナルを開いてcsrutil disableを実行します

  2. マシンを再起動して/System/Library/LaunchDaemons/com.Apple.taskgated.plistを編集し、-pオプションを追加します。

    <array>
        <string>/usr/libexec/taskgated</string>
        <string>-sp</string>
    </array>
    
  3. 回復モードで再起動してSIP(csrutil enable)を再度有効にします

  4. マシンを再起動し、ユーザーUSERNAMEをグループprocmodに追加します。

    Sudo dseditgroup -o edit -a USERNAME -t user procmod

    代替ユーザーをグループに追加することは実行可能なsetgid procmodを作成するです。これはprocmodも有効にするためですsetgidバイナリを実行するユーザーのグループID( https://Apple.stackexchange.com/a/112132 で推奨)

    Sudo chgrp procmod /path/to/gdb
    Sudo chmod g+s /path/to/gdb 
    
27
drRobertz

最初にHomebrewをインストールします。

/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

次に、これを実行します:brew install gdb

28
Sankalp Singha

ブログの投稿でそれを非常によく説明しています。

http://panks.me/posts/2013/11/install-gdb-on-os-x-mavericks-from-source/

そして、私がそれを機能させる方法:

  1. KeyChain Accessを介してコーディング署名証明書を作成します。

    1.1メニューからKeyChain Access> Certificate Assistant> Create a Certificate ...を選択します

    1.2ウィザードに従って証明書を作成し、gdb.certという名前を付けます。IDタイプはSelf Signed Rootで、証明書タイプはCode Signingを選択し、デフォルトを上書きさせてくださいを選択します。

    1.3証明書の場所を指定する画面に到達するまでContinueを数回クリックしてから、KeychaintoSystem.

  2. Homebrew経由でgdbをインストールします:brew install gdb

  3. 再起動taskgatedSudo killall taskgated && exit

  4. ターミナルウィンドウを再度開き、Sudo codesign -vfs gdb.cert /usr/local/bin/gdbと入力します

11
ryenus

これは必ずしも質問に対処するものではありませんが、Mac OS Xを使用している場合は、おそらくlldbLLDB Homepage を使用できます。 gdbと非常によく似ており、gdbで使用するコマンドを使用するためのガイドも提供します。

11
user2074102

Mac OS X El Capitanでは、homebrewを使用してgdbをインストールします。

brew install gdb

次に、こちらの指示に従います: https://sourceware.org/gdb/wiki/BuildingOnDarwin 、セクション2.1 Mac OS X 10.5(Leopard)以降のメソッド

8

gdbのmacportsバージョンをインストールしたら、/System/Library/LaunchDaemons/com.Apple.taskgated.plistを適切に編集するためにSIPを無効にする必要があります。 SIPを無効にするには、回復モードで再起動し、次のコマンドを実行する必要があります。

csrutil disable

その後、再起動します。次に、com.Apple.taskgated.plistの下部を次のように編集する必要があります。

<array>
        <string>/usr/libexec/taskgated</string>
        <string>-sp</string>
</array>

その後、変更を有効にするために再起動する必要があります。次に、SIPを再度有効にする必要があります。 macportsインストールのgdbコマンドは、実際にはggdbです。こちらの手順に従って、符号ggdbをコーディングする必要があります。

https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html

コード署名を機能させることができる唯一の方法は、ggdbSudoで実行することです。幸運を!

2
user14241

MacPortsは今すぐEl Capitanにインストールできるようです: https://www.macports.org/install.php それからおそらくgdbをインストールできますあなたが言及したリンクで。

0
m.aibin

これをHigh Sierra 10.13.1で動作させるために数日を費やしました。 homebrewのgdb 8.1バージョンは、私が何を試みても機能しませんでした。 macportsを介してgdb 8.0.1をインストールすることになり、これは奇跡的に機能しました(コード署名などに関連する他の必要なフープをすべてジャンプした後)。

追加の問題の1つは、Eclipseでは、すべてのプログラム引数の周りに無関係な一重引用符が付けられることです。代わりに.gdbinit内に引数を指定することで回避できます。

0
llevar