[英]gdb cannot work under mac os after creating a certificate and codesign
[英]subject: cannot codesign system certificate for gdb in keychain access in Mac OS X High Sierra
我正在嘗試在Mac OSX High Sierra上使用gdb。 我使用brew安裝了8.01版(最新版本8.1實際上有一個單獨的,不相關的錯誤 ),並且在codesign步驟上遇到了麻煩。 我正在按照brew建議頁面上的說明進行操作 。
在“鑰匙串訪問”中,我使用“ codesign”選項創建一個證書,並覆蓋默認值,然后單擊直到其要求輸入證書的位置為止,為此我選擇了“鑰匙串:系統”。 但是,此后我立即收到一條神秘消息:
An Error Occurred
Unknown Error = -2,147,414,007
該消息也出現在上一個線程中 ,但是唯一的答案是質量低下,沒有用,問題似乎並沒有引起太多的關注。 我還嘗試進入恢復模式並執行csrutil disable
,但仍然出現-2,147,414,007
錯誤。 回到“鑰匙串訪問”窗口中“系統”下,我獲得了剛創建的證書的公共和私有RSA密鑰,但是證書本身不存在。
如果我重復所有操作,但是在“登錄”而不是“系統”下創建,那么這次將創建證書。 然后,我將一個.cer文件導出到我的桌面,然后再導入到Keychains中,但在“系統”類別下。 然后,我重新啟動計算機,然后執行
codesign -s gdb-cert /usr/local/Cellar/gdb/8.0.1/bin/gdb
但我收到error: The specified item could not be found in the keychain.
。
我當然可以lldb
執行sudo gdb
或lldb
,但我想將gdb
與emacs
一起使用,所以這些都不是選項(當然,從技術上講,我可以只執行sudo emacs
,它將起作用,但是出於明顯的原因,我不希望使用sudo
)。 我該如何對gdb進行代碼簽名,以便可以在不遇到mach port
投訴的情況下使用它?
編輯:似乎其他地方的另一個線程有很多人有同樣的問題。 那里似乎沒有確定的解決方法。 我嘗試了一些建議,並繼續得到
Unable to find Mach task port for process-id 575: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
我終於得到它的工作。 我正在使用截至本文發布之日的最新High Sierra。 首先,我安裝了較舊的gdb版本8.0.1,而不是似乎已損壞的最新版本8.1:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb
然后brew pin gdb
。
對於后續步驟,我發現此線程和該其他線程很有用。 另外, 此頁面 。
為了避免-2,147,414,007
錯誤,請在“登錄”而不是“系統”中創建證書。 然后,單擊掛鎖以解鎖“系統”類別,然后將證書和密鑰拖動到“系統”中。 如果此處出現任何問題,您可以嘗試使用File-> Import和File-> Export。 目標是獲得以下內容:
例如證書和密鑰都在System
鑰匙串下,而不是login
。 (甚至不必將鍵拖到系統中,但為了安全起見,我這樣做了)。
然后,這是非常重要的一步:右鍵單擊證書,轉到“信息”,“信任”,然后為每個類別選擇“始終信任”。 如果您不這樣做,則代碼簽名將無效,即使您進行了代碼簽名,也仍會在gdb中獲得馬赫端口錯誤消息。
(上面鏈接的兩個線程中的答案之一是說暫時啟用Directory Utilities中的root帳戶,但我不確定這是否確實必要)。 然后,重新啟動計算機或執行sudo killall taskgated
。 然后codesign -fs gdb-cert $(which gdb)
。
然后,我不再在gdb中收到mach端口錯誤消息。 我第一次跑時,出現一個彈出窗口,要求輸入密碼 。 為了禁用它以便以后運行,我按照該線程做了sudo /usr/sbin/DevToolsSecurity --enable
。
還要注意8.0.1有一個小問題:您將收到有關unhandled dlyd version
警告。 在該線程中對此進行了解釋。 請注意,該線程中的某些帖子說斷點不起作用,但我沒有看到這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.