私のアプリは正常に動作しますが、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".
Snow Leopard以降のMac OSバージョンでは、gdb
実行可能ファイルをコード署名するだけでは不十分です。
動作させるには、このガイドに従う必要があります。 http://www.opensource.Apple.com/source/lldb/lldb-69/docs/code-signing.txt
このガイドではlldb
に対して行う方法を説明していますが、プロセスはgdb
に対してもまったく同じです。
Sudo gdb executableFileName
に変更すると機能します! :)
証明書を作成し、gdbに署名する必要があります。
最後に、gdbに署名できます。
Sudo codesign -s gdb-cert /usr/local/bin/ggdb
Sudo ggdb ./myprog
問題は、rootユーザーとしてログインしていないことです(これは望ましくありません)。アクセスを許可するには、gdbの証明書を作成する必要があります。このチュートリアルに従ってください、あなたは行くのが良いはずです...
http://sourceware.org/gdb/wiki/BuildingOnDarwin
他のすべてが失敗した場合は、次を使用します:Sudo gdb executableFileName
このリンク このエラーをなくすための最も明確で詳細なステップバイステップの手順がありました。
私の場合、キーを「システム」キーとして使用する必要がありました。そうしないと、機能しませんでした(すべてのURLが言及しているわけではありません)。
また、taskgated
を強制終了することは、再起動する代わりに実行可能な(より高速な)代替手段です。
また、このプロセスを開始し、brew uninstall gdb
を使用して現在のgdbをアンインストールする前に、 アンインストールされたMacPorts を使用しました。
El Capitanで機能させるには、このコマンドが必要でした。
Sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/gdb-cert.cer
これが本当に便利です guide これは私の問題を解決しました(OSX 10.13.6)。
codesign -fs gdbc /usr/local/bin/gdb
を実行します:これはrootパスワードを要求しますMacOSXでは、lldbにコード署名する必要があります。デバッグビルドとリリースビルドは、lldb_codesignという名前のコード署名証明書を使用してコード署名するように設定されています。
If you don't have one yet you will need to:
- Launch /Applications/Utilities/Keychain Access.app
- In Keychain Access select the "login" keychain in the "Keychains"
list in the upper left hand corner of the window.
- Select the following menu item:
Keychain Access->Certificate Assistant->Create a Certificate...
- Set the following settings
Name = lldb_codesign
Identity Type = Self Signed Root
Certificate Type = Code Signing
- Click Continue
- Click Continue
- Click Done
- Click on the "My Certificates"
- Double click on your new lldb_codesign certificate
- Turn down the "Trust" disclosure triangle
Change:
When using this certificate: Always Trust
- Enter your login password to confirm and make it trusted
The next steps are necessary on SnowLeopard, but are probably because of a bug
how Keychain Access makes certificates.
- Option-drag the new lldb_codesign certificate from the login keychain to
the System keychain in the Keychains pane of the main Keychain Access window
to make a copy of this certificate in the System keychain. You'll have to
authorize a few more times, set it to be "Always trusted" when asked.
- Switch to the System keychain, and drag the copy of lldb_codesign you just
made there onto the desktop.
- Switch to Terminal, and run the following:
Sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/lldb_codesign.cer
- Right click on the "lldb_codesign" certificate in the "System" keychain (NOT
"login", but the one in "System"), and select "Delete" to delete it from
the "System" keychain.
- Reboot
- Clean and rebuild lldb and you should be able to debug.
That should do it.
[注:-lldbはmacでgdbとして使用されます。]
this チュートリアルに従いましたが、すべて問題ありません。
これらの手順は、OSX High Sierraで機能し、ルートとしてgdbを実行することを避けます(やっと!)最近、OSX 10.13.2から10.3.3に更新しました。これは、gdb 8.0.1(homebrewでインストール)が失敗し始めたときだと思います。
他の人の指示に苦労しました。別の指示の後、すべてが混乱でした。だから私は新鮮に始めました。私は多かれ少なかれ、これらの 指示 に従いました。
混乱をきれいにします。
brew uninstall --force gdb # This deletes _all_ versions of gdb on the machine
Applications
-> Utilities
-> Keychain Access
で、以前のすべてのgdb証明書とキーを削除しました(ここで何をしているのか必ず確認してください!)。これが必要かどうかは明らかではありませんが、他の命令を使用してそれらの証明書とキーを作成しようとしているので、とにかくそれらを削除しました。ログインとシステムの両方にキーと証明書がありました。次に、gdbを再インストールします。
brew install gdb
Keychain Access
内で、メニューKeychain Access
-> Certificate Assistant
-> Create a Certificate
に移動しますName : gdb-cert Identity Type: Self Signed Root Certificate Type : Code Signing [X] Let me override defaults
Serial Number : 1 Validity Period (days): 3650
2番目の証明書情報ページで、すでに入力されているフィールドを除くすべてのフィールドを空白のままにしました。
[キーペア情報]ページで、デフォルトのままにしました
Key Size : 2048 Algorithm : RSA
[X] Include Key Usage Extension [X] This extension is critical Capabilities: [X] Signature
[X] Include Extended Key Usage Extension [X] This extension is critical Capabilities: [X] Code Signing
Basic Constraints Extensionページでは、何もチェックされていません(デフォルト)。
[サブジェクト代替名の拡張子]ページで、デフォルトのチェックボックスをオンのままにして、他に何も追加しませんでした。
[X] Include Subject Alternate Name Extension
Keychain: System
[作成]をクリックすると、パスワードの入力を求められました。
Keychain Access
アプリに戻り、System
に移動してgdb-cert
を右クリックし、ドロップダウンメニューTrust
の下で、すべてのフィールドをAlways Trust
に変更しました。
コンピューターを再起動しました。
ターミナルで、codesign -s gdb-cert /usr/local/bin/gdb
を実行しました。プロンプトが表示されたらパスワードを入力しました。
ターミナルで、echo "set startup-with-Shell off" >> ~/.gdbinit
を実行しました
Gdbコンソール内でgdb myprogram
を実行し、次にstart
を実行しました。ここで、パスワードの入力を求められたと思います。その後、以降のすべての実行で、パスワードの入力が求められませんでした。
これは奇妙なアプローチですが、私にとってはうまくいきました(MacOs HighSierra 10.13.3)。 CLionをインストールします。 gdbが付属しています。ターミナルを使用してgdbを実行します。 gdbプログラムをusr/local/bin /にコピーします。サインイン、須藤などの問題なし.
ここでの指示に従ってください macOS上のCodesign gdb は、私にとってmacOS High Sierra(10.13.3)でこの問題を解決したようです。