Mac OSX El Capitanにgdb(デバッガー)をインストールする方法は? gdbをインストールしようとしましたが、数回失敗しました。
私はこのURLをたどっていました: http://ntraft.com/installing-gdb-on-os-x-mavericks/ 、MACはMacPortsのインストールを許可しません。
この点で誰も私を助けてください。
この回答はMac OS El Capitan向けに書かれていることに注意してください。新しいバージョンの場合、適用されなくなる可能性があることに注意してください。特に、レガシーオプションは廃止される可能性が非常に高いです。
この問題には2つの解決策があり、これらはこの質問に対する他の回答と OSX 10.11 El Capitanでmacportsを使用してgdbを動作させる方法 で言及されていますが、ここで混乱を解消します私の要約です(コメントのために少し長くなったので答えとして):
どちらがより安全であるかは、1)自己署名証明書を信頼するか、2)ユーザーにより多くの特権を与えるかの選択に要約されると思います。
署名の代替を使用する場合、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する必要があることに注意してください(最も簡単な方法は再起動です)。
@ user14241の回答によると、SIPを無効にし、taskgated
に-pオプションを追加することはオプションです。このオプションを使用する場合は、バイナリへの署名は不要ですであり、Developer Toolsグループ(_developer
)のメンバーとして認証するためのダイアログもバイパスします。
Taskpatedに-pオプション(グループprocmodおよびprocviewを許可)を追加したら、gdbの使用を許可するユーザーをprocmod groupに追加する必要もあります。
レシピは次のとおりです。
復旧モードで再起動し、ターミナルを開いてcsrutil disable
を実行します
マシンを再起動して/System/Library/LaunchDaemons/com.Apple.taskgated.plist
を編集し、-p
オプションを追加します。
<array>
<string>/usr/libexec/taskgated</string>
<string>-sp</string>
</array>
回復モードで再起動してSIP(csrutil enable
)を再度有効にします
マシンを再起動し、ユーザー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
最初にHomebrewをインストールします。
/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
次に、これを実行します:brew install gdb
ブログの投稿でそれを非常によく説明しています。
http://panks.me/posts/2013/11/install-gdb-on-os-x-mavericks-from-source/
そして、私がそれを機能させる方法:
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.
Homebrew経由でgdbをインストールします:brew install gdb
再起動taskgated
:Sudo killall taskgated && exit
ターミナルウィンドウを再度開き、Sudo codesign -vfs gdb.cert /usr/local/bin/gdb
と入力します
これは必ずしも質問に対処するものではありませんが、Mac OS Xを使用している場合は、おそらくlldb
LLDB Homepage を使用できます。 gdb
と非常によく似ており、gdb
で使用するコマンドを使用するためのガイドも提供します。
Mac OS X El Capitanでは、homebrewを使用してgdbをインストールします。
brew install gdb
次に、こちらの指示に従います: https://sourceware.org/gdb/wiki/BuildingOnDarwin 、セクション2.1 Mac OS X 10.5(Leopard)以降のメソッド。
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
コード署名を機能させることができる唯一の方法は、ggdb
をSudo
で実行することです。幸運を!
MacPortsは今すぐEl Capitanにインストールできるようです: https://www.macports.org/install.php それからおそらくgdbをインストールできますあなたが言及したリンクで。
これをHigh Sierra 10.13.1で動作させるために数日を費やしました。 homebrewのgdb 8.1バージョンは、私が何を試みても機能しませんでした。 macportsを介してgdb 8.0.1をインストールすることになり、これは奇跡的に機能しました(コード署名などに関連する他の必要なフープをすべてジャンプした後)。
追加の問題の1つは、Eclipseでは、すべてのプログラム引数の周りに無関係な一重引用符が付けられることです。代わりに.gdbinit内に引数を指定することで回避できます。