迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

解决 Mac 系统下 gdb调试的问题

作者:迹忆客 最近更新:2022/12/26 浏览次数:

在mac系统下,初次使用gdb的时候可能会遇到下面的错误

(gdb) run
Starting program: /usr/local/bin/order_monitor
Unable to find Mach task port for process-id 26551: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))

这是因为 Darwin 内核在你没有特殊权限的情况下,不允许调试其它进程。调试某个进程,意味着你对这个进程有完全的控制权限,所以为了防止被恶意利用,它是默认禁止的。允许 gdb 控制其它进程最好的方法就是用系统信任的证书对它进行签名。

创建证书

按照以下步骤创建代码签名的证书:

  1. 打开keychain Access(钥匙串) 应用程序
  2. 执行菜单 钥匙串访问->证书助理->创建证书
  3. 填写如下信息:
    • 名称: gdb_codesign (可以自定义其他名称)
    • 身份类型: 自签名根证书
    • 证书类型: 代码签名
    • 勾选: 让我覆盖这些默认设置
  4. 一路继续,直到指定证书位置 的步骤,然后选择 系统
  5. 点击“创建”,会提示数据系统登录密码,创建完成。 (注意: 如果在第四步选择系统,可能会出现创建不成功的问题,这时候可以在第四步的时候选择登录,来创建。这样在创建成功之后,将新创建的证书直接拖入左侧的系统中即可。 如果选择系统可以直接创建成功,则忽略此项注意)
  6. 在钥匙串访问程序中,选择左侧栏的系统我的证书,找到刚刚创建的gdb_codesign 证书,双击打开证书信息窗口,展开信任项,设置使用此证书时始终信任
  7. 关闭证书信息窗口,系统会再次要求输入系统登录密码。

对gdb签名

执行下面的命令

 codesign -fs gdb_codesign(上面创建的证书名称) $(which gdb)

注意: 上面的签名命令是在我们的mac系统是10.14(Mojave)版本之前。如果我们的系统是 10.14(Mojave) 之后的系统 需要先创建一个文件 gdb-entitlement.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>
</pre>

然后再执行

codesign --entitlements gdb-entitlement.xml -fs gdb_codesign $(which gdb)

完成之后,一定要重启系统,否则签名不会生效。

解决gdb的调试失败问题

经过上面的操作之后,解决了gdb的签名问题。但是有时候也可能会遇到下面的问题。

(gdb) run
Starting program: /usr/local/bin/order_monitor
During startup program terminated with signal ?, Unknown signal.

解决方法很简单,执行下面的命令即可

set startup-with-shell off

为了方便,此命令可以写入到个人路径下的.gdbinit 文件中。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Mac 上更改 MySQL 根密码

发布时间:2024/03/25 浏览次数:243 分类:MySQL

本文教你如何在 OSX 上更改 MySQL root 用户密码。我们将使用 XAMPP,因此你可以使用 MySQL 控制台更改密码。

使用 Mac 终端打开 MySQL

发布时间:2024/03/25 浏览次数:272 分类:MySQL

本文将教你如何使用 Mac 终端打开 MySQL。我们将向你展示如何在 macOS Catalina 及更高版本上执行此操作。此外,macOS Mojave 及更早版本。

在 Mac OS 上设置 C#

发布时间:2024/02/03 浏览次数:263 分类:编程语言

在本文中,了解设置 C# 语言以在 Mac OS 上进行开发的过程。本文将演示 Mac OS 上 C# 语言的完整设置和基本语法。在 Mac OS 上安装和设置 C#

在 Mac 上安装 Pip3

发布时间:2023/12/21 浏览次数:170 分类:Python

这篇文章向你展示了使用 Python 在 Mac 上安装 pip3 的方法。你可以使用两种主要方法通过 Python 在 Mac 上安装 pip3:get-pip.py 文件和 Homebrew 包管理器。

在 Mac 上更新 Python 的方法

发布时间:2023/12/21 浏览次数:253 分类:Python

本教程演示如何在 Mac 上更新 Python。在本教程中,我们将讨论在 Mac 上更新 Python 的不同方法。我们还将讨论如何在 Mac 上安装最新版本的 Python 3 或 Python 2。

在 macOS 中查找 Java 的位置

发布时间:2023/10/18 浏览次数:66 分类:Java

本教程演示了如何确定 Java 在 macOS 上的安装位置。在本文中,我们将确定 Java 在 macOS 上的安装位置。Java 安装在 macOS 设备的某个目录中。我们可以使用终端找到这个目录的位置。

从 Mac 中卸载 JDK 8

发布时间:2023/10/10 浏览次数:157 分类:Java

本文介绍如何从 MacOS 卸载 JDK 8。在过去的几十年里,Java 一直是主要的编程语言之一。它是计算机科学不可或缺的一部分。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便