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

參考文獻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章