10.5以降、macOSのコードサインの問題をカバーする多くのトピックが浮かんでいます。私が達成したかったのは、GeanyをGNUデバッガー(gdb)で動作させることです。デバッガはgeanyにありますが、(すでによく知られている)エラーメッセージは次のとおりです。
Error message from debugger back end:
Unable to find Mach task port for process-id 39847: (os/kern) failure (0x5).\n (please check gdb is codesigned - see taskgated(8))
Unable to find Mach task port for process-id 39847: (os/kern) failure (0x5).\n (please check gdb is codesigned - see taskgated(8))
一般に、gdbの使用を許可する(すべき)ことを考慮する多くの制限があります。 gdb 8.0.1は動作する可能性がありますが、gdb 8.1はまったく動作しません- こちらを参照 、Lazarus Wikiでも確認済みです。
0)さまざまな指示の手順に従って、証明書「gdb-cert」を作成しました。例 ここ
1)gdb実行可能ファイルのコード署名の手順に従いました(ソース: gdb 、および Stackoverflow )
/usr/local/Cellar/gdb/8.0.1/bin/gdb
(繰り返しますが、一部の言語では8.1に問題があります-Pascalも)。コードが署名されていることを確認したい場合は、
$ codesign -vvvv gdb
それぞれのディレクトリに。私のものです。
2)証明書が実際にコード署名の対象となるように割り当てられていることを確認します-私の場合です。また、信頼されています-これは必要です。
3)ファイルを編集した上記のgdbを実行する別の方法も試しました(最初にSIPを回復時に無効にする必要があることに注意してください!!!!)リカバリでcsrutil disable
が使用されている場合にのみ変更が機能します。
Sudo nano /System/Library/LaunchDaemons/com.Apple.taskgated.plist
このステップの後、壊滅的なこと、この変更が取り消されるまで、コードエディタは再び起動しません(!!)(Geany、Atom、Text Editor、MS Visual Studio-すべて破損-spをファイルに挿入した後)
4)一部のトピックでは、コマンドcsrutil enable --withouth
debugがリカバリで使用されている場合にのみデバッグが機能することがわかりました。これは何も変更していません。
最終的に私は:
誰もがこの動作を確認できれば非常に感謝しています、これに対する解決策:)
これはコードサインの資格に関連しています。署名プロセスで「com.Apple.security.cs.debugger」キーを追加する必要があります。
たとえば、codesign -fs gdbcert /usr/local/bin/gdb
をcodesign --entitlements gdb.xml -fs gdbcert /usr/local/bin/gdb
に変更する必要があります。
gdb.xmlのコンテンツは、次のコードのようなものでなければなりません。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.Apple.security.cs.debugger</key>
<true/>
</dict>
</plist>
log
コマンドは、コード署名の問題のトラブルシューティングに役立ちます。ここに私が使用したものがあります(Mojaveで):
log stream --predicate 'process == "taskgated" OR (process == "kernel" AND eventMessage CONTAINS "macOSTaskPolicy")' --info
com.Apple.taskgated.plist
を変更しなかったので、リストしたテキストエディターのいずれにも問題はありません。ただし、使用している修正プログラムでは、残念ながらgdb
をSudo
で実行する必要があります(High Sierraで行った修正には必要ありませんでした)。 Geanyを使用しませんが、これらはMac Mojaveでgdb
に使用したわずかに変更された手順です(High Sierraの手順を公開した元の作者のおかげです)。
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb
を実行します。brew pin gdb
でフォローgdbcert
)Certificate Error: Unknown Error =-2,147,414,007
ログインする場所を設定し、左上隅のロックをクリックしてシステムのロックを解除し、証明書をドラッグアンドドロップgdbcert
してSystemキーチェーン。Sudo killall taskgated
または場合によってはps aux | grep taskgated
その後kill -9 <pid>
codesign -fs gdbcert /usr/local/bin/gdb
最終的にSudo killall taskgated && codesign -fs gdbcert /usr/local/bin/gdb
を使用しましたcsrutil enable --without debug
gdb
を使用したデバッグは、期待どおりに機能するようになりました。gdb
でSudo
を実行します。たとえば、Sudo gdb -q ./a.out