在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)

文章目录

      • 笔记本系统环境:
      • 查看是否安装 gdb:
      • 命令 brew 安装 gdb:
      • 创建系统证书:
      • 修改证书:
      • 对证书授权:
      • 验证 gdb 证书创建,关闭 SIP 成功:
      • 期间可能会遇到的奇怪的问题?
        • 遇到证书创建失败?
        • 遇到 `Unable to find Mach task port for process-id 2358: (os/kern) failure (0x5).`:
        • 遇到 `[New Thread 0x1303 of process 971]` 卡死:
      • 一些必须注意点:

简 述: 在 mac 使用 gdb 调试程序时候,会遇到报错如下,本文就是专门解决这个问题的。本教程也是目前网上最新最详细的在 mac 安装 gdb 的教程

(gdb) run
Starting program: /Users/muli/project/github/linuxExample/06_gdb/mainApp 
Note: this version of macOS has System Integrity Protection.
Because `startup-with-shell' is enabled, gdb has worked around this by
caching a copy of your shell.  The shell used by "run" is now:
    /Users/muli/Library/Caches/gdb/bin/zsh
Unable to find Mach task port for process-id 20050: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

在 MacOS 10.14.6 的系统下,发现安装 gdb 8.3 (当前最新) 的坑不是一般的多,那真真的多。鉴于网上的教程都是过时的,且按照某一篇, 你是不可能顺利运行安装成功的。所以浪费我昨天一个晚上解决这个问题(我的时间也很宝贵的),今天又花费一晚上时间,完成这篇图文并茂的的安装教程。作为一个日后的记录和给后来者一个方便。 在MacOS10.14.6安装最新gdb8.3的详细教程,含可能遇到的所有坑(网上最新教程)

其中大概思路:

  • 创建整证书,证书授权
  • 关闭 SIP 安全防护,重启系统;
  • sudo 运行 gdb 调试;
  • kill 卡死进程, 再次重新 gdb 调试;
  • 成功

笔记本系统环境:

MacOS 10.14.6


查看是否安装 gdb:

  • 执行 brew search gdb ,搜索 brew 仓库:

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第1张图片

命令 brew 安装 gdb:

  • 执行 brew install gdb 使用 brew 工具安装 gdb (默认最新),等待安装完毕;

  • 执行 which gdb 查看安装的路径为 /usr/local/bin/gdb

  • 执行 gdb -v 查看的 gdb 安装版本,版本为 8.3


创建系统证书:

  • 打开 钥匙串访问

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第2张图片
  • 左上角进入 钥匙串访问 - 证书助理 - 创建证书

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第3张图片
  • 创建证书, 名称随意,如 gdb_codesigned ,其中选择为 自签名根证书代码签名 ,还有✅ 让我覆盖这些默认值

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第4张图片
  • 后面一路点击下一步,不用做任何修改 ,贴出来中间的过程图

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第5张图片 在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第6张图片 在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第7张图片 在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第8张图片 在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第9张图片 在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第10张图片 在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第11张图片
  • 一直到这步骤,进行修改,选择 "系统 ",

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第12张图片
  • 证书创建成功 (若是失败,参考下面解决方案)

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第13张图片

修改证书:

  • 双击 证书打开, 勾选使用 始终信任 ,然后关闭此此窗口,会自动保存修改

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第14张图片

对证书授权:

  • 执行 codesign -fs gdb_codesigned /usr/local/bin/gdb 命令,给证书授权;在执行 echo "set startup-with-shell off" >> ~/.gdbinit关闭 MacOS 系统的 SIP 安全验证 ;设置完这咯爱那个步骤后, 要重启电脑 ,使得配置生效。

    codesign -fs gdb_codesigned /usr/local/bin/gdb
    echo "set startup-with-shell off" >> ~/.gdbinit
    

验证 gdb 证书创建,关闭 SIP 成功:

  • 使用一个小的 c++ 项目测试下,下载地址,执行 g++-9 *.cpp -o mainApp -g 生成可调试的可执行程序 mainApp ,然后运行 sudo gdb mainApp



期间可能会遇到的奇怪的问题?

遇到证书创建失败?

  • 若是失败,看到下图提示:

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第15张图片
  • 解决方法:则重头创建一次系统证书,最后这一步选择 “登录” ,编绘创建成功。

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第16张图片
  • 且证书创建成功后,需要手动将其从登录区域, 移动到系统区域

在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第17张图片

遇到 Unable to find Mach task port for process-id 2358: (os/kern) failure (0x5).

  • 出现如下如下代码: Unable to find Mach task port for process-id 2358: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8))

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第18张图片
  • 解决方法:按下 control + z 退出终端使用 sudo 权限 ,运行命令 sudo gdb mainApp 调试


遇到 [New Thread 0x1303 of process 971] 卡死:

  • 出现如下代码 [New Thread 0x1303 of process 971] 代码,被进程被卡死(通常第一次会遇到这个问题)

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第19张图片

  • 解决方法:按下 control + z 退出终端,执行 killall 2415 杀死该进程;然后再次运行 sudo gdb mainApp 调试, 按下 r 调试。

    在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)_第20张图片

一些必须注意点:

  • 执行命令时候,证书生效,有的带 -f 参数;
  • 命令 codesign -fs gdb_codesigned /usr/local/bin/gdb 时候,gdb_codesigned 要换成你的证书名称
  • 有的证书博客证书的起名称为 gdb_cert, 但是命令 和终端截图为 gdb-cert; 注意短杠
  • 另外一个是 dgb 最好需要带绝对路径,避免找不到;
  • 看完这篇教程,一定要点赞

参考博客:

在macOS10.14上使用GDB的教程

macbook创建自签名根证书失败,怎么办?

mac book上安装和使用gdb

Tips:如何优雅的使用GDB调试Go

解决GDB在Mac下不能调试的问题

MAC OSX系统使用gdb编译程序时的报错处理

macOS High Sierra下无法使用gdb的解决办法

你可能感兴趣的:(MacOS,mac,安装,gdb,教程,sip)