156

私のアプリは正常に動作しますが、gdb は次のエラーでデバッグに失敗します

(gdb) run
Starting program: /path/to/app 
Unable to find Mach task port for process-id 83767: (os/kern) failure (0x5).

私はOS X Lionを使用しています。GDBのバージョンは

$ gdb --version
GNU gdb 6.3.50-20050815 (Apple version gdb-1752) (Sat Jan 28 03:02:46 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".
4

12 に答える 12

75

gdbSnow Leopard およびそれ以降の Mac OS バージョンでは、実行可能ファイルをコード署名するだけでは不十分です。

機能させるには、このガイドに従う必要があります: http://www.opensource.apple.com/source/lldb/lldb-69/docs/code-signing.txt

このガイドでは、 の場合の方法を説明していますlldbが、プロセスは の場合とまったく同じですgdb

于 2013-03-19T23:12:03.750 に答える
33

証明書を作成して gdb に署名する必要があります。

  • アプリケーション「Keychain Access」を開く (/Applications/Utilities/Keychain Access.app)
  • メニューを開く/キーチェーン アクセス/証明書アシスタント/証明書の作成...
  • 名前 (例では gdb-cert) を選択し、「ID タイプ」を「自己署名ルート」に設定し、「証明書タイプ」を「コード署名」に設定し、「デフォルトを上書きする」を選択します。「続行」をクリックします。定義済みの 365 日の期間を 3650 日に延長することができます。
  • [証明書の場所を指定] 画面が表示されるまで [続行] を数回クリックし、[キーチェーンをシステムに設定] を設定します。
  • 「システム」キーチェーンに証明書を保存できない場合は、「ログイン」キーチェーンに証明書を作成してからエクスポートします。その後、「システム」キーチェーンにインポートできます。
  • キーチェーンで「システム」を選択すると、新しい証明書が見つかるはずです。証明書のコンテキスト メニューを使用して、[情報を見る] を選択し、[信頼] 項目を開き、[コード署名] を [常に信頼する] に設定します。
  • 証明書を使用するには、「キーチェーン アクセス」アプリケーションを終了し、現在実行中の「タスクゲート」プロセスを強制終了して「タスクゲート」サービスを再起動する必要があります。または、コンピューターを再起動することもできます。
  • 最後に、gdb に署名できます。

    sudo codesign -s gdb-cert /usr/local/bin/ggdb

    sudo ggdb ./myprog

于 2014-10-17T18:47:23.683 に答える
17

問題は、rootユーザーとしてログインしていないことです(これは望ましくありません)。アクセスを許可するには、gdbの証明書を作成する必要があります。このチュートリアルに従ってください、そしてあなたは行ってもいいはずです...

http://sourceware.org/gdb/wiki/BuildingOnDarwin

他のすべてが失敗した場合は、次を使用してください。sudo gdb executableFileName

于 2012-12-30T21:18:59.090 に答える
3

El Capitan で動作させるには、次のコマンドが必要でした。

sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/gdb-cert.cer
于 2016-01-10T19:50:44.103 に答える
2

このチュートリアルに従いましたが、すべて問題ありません。

于 2014-08-27T01:27:28.460 に答える