MacOS 安裝 gdb 踩過的坑


今天在 OS X EI Capitan 10.11.6 中安裝 gdb 的時候,出了一堆狀況,寫下此文以便以后能夠時刻提醒自己。

解決方案

1、安裝 gdb

$ brew install gdb
$ gdb --version
GNU gdb (GDB) 8.2.1

2、我們嘗試運行 gdb 時,報如下錯誤:

Unable to find Mach task port for process-id 28885: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))

3、創建證書
執行菜單 鑰匙串訪問->證書助理->創建證書
填寫信息

  • 證書名稱:gdb-cert
  • 身份類型:自簽名根證書
  • 證書類型:代碼簽名
  • 勾選:讓我覆蓋這些默認值

然后一直點擊繼續,直到指定證書位置的步驟,選擇鑰匙串保存的位置是系統
點擊創建,輸入系統密碼,創建完成。(極有可能創建失敗,這時可以選擇鑰匙串保存位置為登錄,然后導出證書,再然后把證書導入到系統)
打開證書簡介界面,點擊信任->代碼簽名,將其改為始終信任

  1. 重啟系統刷新系統證書和代碼簽名數據

  2. 給 gdb 簽名

    $ sudo killall taskgated
    $ codesign -fs gdb-cert "$(which gdb)"    # -f 表示簽名若已存在就覆蓋
    
  3. 添加 ~/.gdbinit 文件

    $ echo "set startup-with-shell off" >> ~/.gdbinit
    
  4. 最后會出現如下錯誤

    $ sudo gdb test.out
    (gdb) r
    Starting program: /Users/apple/Desktop/code/test.out
    [New Thread 0x1103 of process 843]
    [New Thread 0xe03 of process 843]
    
    During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.
    

4、這個時候我們只需要更換 gdb v8.1 到 gdb v8.0.1,用如下代碼替換:

$ brew uninstall gdb
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c3128a5c335bd2fa75ffba9d721e9910134e4644/Formula/gdb.rb

測試成功如下:

gdb

參考文獻


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM