在MaxOSX系统上安装gdb并给gdb制作证书

2023-11-02

        在MacOSX系统上是默认没有安装gdb的,这给MacOSX应用开发人员调试OSX应用程序带来一定困难,因此在MacOSX上安装gdb对应用程序进行调试是一个很好的选择。但是在MacOSX上安装gdb并不想在Linux上那么容易安装,他有一定的限制,首先得从GitHub上获取gdb并安装,然后还必须得给gdb进行制作证书,这样才能够正常使用gdb进行调试。

接下来对MacOSX上安装gdb以及给gdb制作证书的过程做一详细说明:

1. 需要用Homebrew 安装 gdb

1)运行命令:brew tap homebrew/dupes

更新brew的homebrew命令, homebrew自身程序公式的服务器地址是托管于github的。

官方文档中提出brew tap 作用用于添加更多仓库,默认情况下tap 假设这些仓库来源于github,但又不局限于它。

不带参数的话,将会列出当前已经tapped 的仓库,比如:

brew tap==> Auto-updated Homebrew!

Updated 1 tap (homebrew/core).

No changes to formulae.

 

caskroom/cask

homebrew/core

homebrew/dupes

neovim/neovim

总共列出了四个仓库,其中前面三个是默认自带的。

如果你要增加的仓库已经存在于homebrew/core 中了(名字一样),你必须显性的安装:

brew install vim   # installs from homebrew/core

brew install username/repo/vim  # installs from your custom repo

(2)再运行: brew install gdb

安装完成后的路径如图:

 

2. gdb制作证书并授权

如果没有证书,会出现如下提示:

(gdb) run
Starting program: /Users/admin/src/tmp/consoleTest/test
Unable to find Mach task port for process-id 12520: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

如图

 

制作证书过程如图:

(1)Mac的Launchpad中找到钥匙串访问(一般在其他分组中)

 

(2)开始制作

 

(3)一路点击继续,需要输入管理员权限等进行操作

 

点击【继续】)

 

点击【继续】)

 

电子邮箱可以不填,直接点击继续即可。点击【继续】)

 

点击【继续】)

 

(使用扩展选中框红的选项。)

 

已扩展的密钥使用扩展 选项选中框红的。

 

(※该步一定要注意,选择【系统】。)

 

需要密码才可以修改系统钥匙串。

 

至此,制作完毕,接下来对证书进行设置,打开 钥匙串访问->系统->我的证书,可以查看刚才自己制作的证书,然后选中刚才制作的证书,右键,显示简介,展开信任,如图:

 

将证书的使用时信任,选中为始终信任,如图:

 

设置完成后的效果,如下图:

 

 ※最后,用命令给gdb进行设置签名证书:

sudo codesign /opt/local/bin/ggdb -s gdb-cert

如果没有任何输出,则表示签名成功。至此,就可以正常使用GDB了。

如果用户还是无法使用GDB,还是出现这个问题的话,请先使用如下命令查看,是否签名是否成功:

codesign -v /opt/local/bin/ggdb

如果没有任何输出,则表示签名已经成功。

3. 安装成功,用gdb对应用程序进行调试。

效果如下图:

 

以上,就是在MaxOSX上安装GDB并给GDB制作证书的所有过程,至此,可以在MacOSX上对应用进行调试了^_^.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在MaxOSX系统上安装gdb并给gdb制作证书 的相关文章

  • ret2libc 攻击不会生成 shell

    我执行了 ret2libc 一切正常 但 shell 没有生成 源代码是 include
  • GDB:捕获信号并继续调试

    我试图在 GDB 中捕获浮点异常 SIGFPE 而不是将其传递给进程并继续调试 我已经给了 gdb 这个 handle SIGFPE stop nopass 当 SIGFPE 发生时 GDB 会停在正确的位置 问题是我不能也不知道如何继续调
  • 如何使用 gdb 调试进程而不暂停它?

    我有一个已经在运行的进程 我想用 GDB 调试它 我一直在使用 gdb pid PID 但是 当我这样做时 该过程会暂停 我想附加到进程而不暂停它 并在它仍在运行时在其内存中查看 这可能吗 或者 有没有办法 分叉 该进程 以便我可以查看其内
  • GDB 中断命令不会在命令文件中执行

    我有一个调试脚本 它执行以下操作 设置两个断点 让我们称呼他们吧start and end断点 启动后 脚本将继续执行 直到start命中断点 once start命中断点 我执行单步执行 直到end命中断点 这是我的命令文件 end br
  • 在剥离的 ELF 可执行文件中设置断点

    我有一个 ELF 32 位动态链接 剥离文件 我希望对其进行调试 尝试在某个地址设置断点时 出现一条消息 提示符号表未加载 我的问题是 当你说 ELF 文件是stripped究竟发生了什么 如何剥离 ELF 文件 是否可以以某种方式重建符号
  • 如何在 GDB 中漂亮地打印 STL 容器?

    我已按照说明进行操作在 GDB 维基上 http sourceware org gdb wiki STLSupport安装 python 漂亮打印机来查看 STL 容器 我的 gdbinit现在看起来像这样 python import sy
  • 为什么我的核心文件没有被覆盖?

    在 Ubuntu 12 04 上 打开一个新的文本文件并写入 include
  • 应用程序中所有函数调用的列表

    我们如何列出应用程序中调用的所有函数 我尝试使用 GDB 但它的回溯列表仅到主函数调用 我需要更深入的列表 即主函数调用的所有函数以及从这些被调用函数调用的函数的列表 等等 有没有办法在 gdb 中得到这个 或者你能给我一些关于如何获得这个
  • 如何在 gdb 中使用 python 访问寄存器

    如何访问当前调试实例的cpu寄存器 例如 您可以从 gdb 调用printf 0x x eax and set eax b eax还有一种方法可以通过 gdb 提供的 python 支持来做到这一点吗 或者我应该创建一个可以像这样调用的 p
  • 使用gdb将地址转换为行

    我有一个由剥离的应用程序生成的堆栈跟踪 如下所示 Check failure stack trace 0x7f0e442d392d unknown 0x7f0e442d7b1f unknown 0x7f0e442d7067 unknown
  • 我可以使用 GDB 来调试正在运行的进程吗?

    在linux下 我可以使用GDB来调试当前正在运行的进程吗 您可以使用以下命令附加到正在运行的进程gdb p PID
  • 警告:可加载部分“my_section”位于 ELF 段之外

    我使用 Cortex R4 的 Arm Compiler v6 9 构建了一个 axf elf 文件 但是 当我使用 Arm MCU Eclipse J link GDB 插件将其加载到目标时 它无法加载我的段的初始化数据 如果我使用 Se
  • 如何在 gdb 中打印长字符串的完整值?

    我想在 GDB 中打印 C 字符串的完整长度 默认情况下它是缩写的 如何强制 GDB 打印整个字符串 set print elements 0 来自GDB手册 https sourceware org gdb onlinedocs gdb
  • Go:使用 gdb 打印变量

    在此程序中 如何使用调试器中断执行并打印 i 的值 package main import fmt func main x abc i 3 fmt Println i fmt Println x 我无法打印我 不过我可以打印 x go bu
  • GDB可以杀死一个特定的线程吗?

    我正在运行一个应用程序 firefox 我想知道是否可以使用 GDB 附加到进程并杀死特定线程 有没有办法做到这一点 我知道此操作可能会使应用程序崩溃 EDIT 在此调试会话中 ps ax显示firefox pid是1328 gdb App
  • 在运行时从应用程序读取调试信息

    除了调试之外 我还有一些关于调试符号以及可以用它们做什么的问题 我最感兴趣的是有关 GCC 的答案 但我也很高兴知道它在其他编译器 包括 MSVC 下的样子 首先 调试符号的常见格式 类型有哪些 它们与编译器和平台有何关系 GCC 和 Mi
  • 如何从 gdb 命令提示符执行外部命令?

    我正在使用 gdb 调试程序 每当我错过断点或决定添加另一个观察点时 我必须终止该进程并重新运行它 为了将现有的 gdb 附加到它 我使用attach
  • 使用 gdb 调试时彻底退出 valgrind

    我正在使用 valgrind 和 gdb 调试程序 然而 我以一种野蛮的方式终止了这些调试会话 这真的是它应该做的吗 设置调试会话 按照来自的指示valgrind 官方网站 http valgrind org docs manual man
  • 在 gdb 中设置应用程序关联

    有没有一种简单的方法可以设置我正在调试的应用程序的亲和力 而无需将 gdb 锁定到同一核心 我问的原因是应用程序以实时优先级运行 并且需要在单核上运行 目前我使用这个命令行 taskset c 3 gdbserver 1234 app ou
  • 使用 gdb 调试反汇编库

    在Linux和Mac OS X中可以使用strapi和next来调试应用程序而无需调试信息 在 Mac OS X 上 gdb 显示在库内部调用的函数 尽管有时会在每个 stepi 指令中推进多个汇编程序指令 在 Linux 上 当我进入动态

随机推荐

  • Quartus-II的安装教程

    Quartus II的安装教程 文章目录 Quartus II的安装教程 一 Quartus II的下载 二 Quartus II的安装 1 解压压缩包 2 进行安装 三 注册Quartus II 一 Quartus II的下载 百度网盘下
  • python pandas ExcelWriter FutureWarning: save is not part of the public API

    升级了Python 到3 10 然后pandas写的ExcelWriter也跟着升级了 以下是版本 pandas 1 5 0 xlwt 1 3 0 然后是执行原来的导数据到Excel的代码报错警告 FutureWarning save is
  • Mybatis的分页插件

    一 添加依赖
  • JAVA多线程与并发学习总结

    1 计算机系统 使用高速缓存来作为内存与处理器之间的缓冲 将运算需要用到的数据复制到缓存中 让计算能快速进行 当运算结束后再从缓存同步回内存之中 这样处理器就无需等待缓慢的内存读写了 缓存一致性 多处理器系统中 因为共享同一主内存 当多个处
  • MAC升级10.15不能使用[远程桌面连接]--解决方案

    MACBook升级10 15之后发现远程桌面无法打开 提示如下 各种找资料 主要是威锋网 均无法解决 只能换软件了 替代软件 Microsoft Remote Desktop 8 0 7版本 比较好用 软件下载地址 链接 https pan
  • java的各类型数据在内存中分配情况详解

    有这样一种说法 如今争锋于IT战场的两大势力 MS一族偏重于底层实现 Java一族偏重于系统架构 说法根据无从考证 但从两大势力各自的社区力量和图书市场已有佳作不难看出 此说法不虚 但掌握Java的底层实现对Java程序员来说是至关重要的
  • IC,ID卡二进制数据解析

    IC卡数据 一般10位 第一位 20 第四位 数据长度 第9位 校验位 最后一位03 如 20 00 00 04 03 CA C3 58 A9 03 ID卡 第一位02 第二位 数据长度 倒数第二位校验位 最后一位03 02 05 1D 0
  • Spyder设置代码自动补全

    1 spyder 代码自动补齐设置方式在tools gt preferences gt IPython console gt advanced Settings 下面 把User the greedy completer 勾选上 再把Aut
  • Linux笔记:增量备份程序rsync快速入门

    文章目录 目的 快速入门 常用选项 总结 目的 rsync是一款开源的文件增量备份程序 通常用于linux下文件的增量备份 这个程序可以将一个目录的文件备份到另一个目录中 并且在每次备份时还可以对文件进行比较 只复制更新有过改动的文件 rs
  • 《代码之丑》——专栏笔记

    一 如何精确命名 错误1 命名过于宽泛 命名过于宽泛 不能精准描述 这是很多代码在命名上存在的严重问题 也是代码难以理解的根源所在 data info flag process handle build maintain manage mo
  • 数字图像处理之校园交通标志检测与识别

    文章目录 背景综述 设计目的 实现过程 第一步为了更好地进行信息的交互 需要先设计基于Matlab的GUI界面设计 第二步其次我们需要读入含有交通标志的图像 第三步接下来是对原始图像进行高斯滤波 第四步为了进行交通标志的提取 第五步对初步定
  • 一、安装虚拟机(CentOS)

    1二 修改主机名 当前虚拟机的主机名 1 查看当前的主机名 1 hostname 第一种方法 vi etc hostname 编辑完需要重启 重启 reboot h now 第二种方法 hostnamectl set hostname lt
  • 小程序AR踩坑记录

    使用微信自带的 VisionKit API提供 AR 能力 官方手册地址 VisionKit 基础 虽然官方提供了 demo 代码 但是埋藏的暗坑还是不少 特此总结一下 DEMO案例 待添加 逻辑流程 大致流程如下 用户访问 AR 页面 程
  • Vue 将数组的字段取出组成key:value形式的对象+key:value 形式的对象组成数组

    1 将数组的字段取出组成key value形式的对象 let list key php value 1 key asp value 2 key aspx value 3 key jsp value 4 let header list for
  • jdk11生成jre

    1 在jdk11的解压目录中没有jre 2 执行 cmd D java jdk 11 0 17 3 执行 bin jlink exe module path jmods add modules java desktop output jre
  • Apollo代码学习(一)—控制模块概述

    Apollo代码学习 控制模块概述 补充 2018 11 08更新 2018 11 15更新 2018 11 20更新 前言 控制 纵向控制 标定表的生成 横向控制 控制信号 仿真 仿真平台及工具 Apollo 阿波罗 是一个开放的 完整的
  • spring 整合 mybatis 中数据源的几种配置总结

    spring 整合 mybatis 中数据源的几种配置方式 因为spring 整合mybatis的过程中 有好几种整合方式 尤其是数据源那块 经常看到不一样的配置方式 总感觉有点乱 所以今天有空总结下 一 采用org mybatis spr
  • 图数据库Neo4j在GIS系统的应用

    1 概述 1 1 图数据库简介 图数据库 Graph Database 是基于图论实现的一种新型的NoSQL数据库 他的数据存储结构和数据的查询方式都是以图论为基础的 图论中图的基本元素为节点和边 在图数据库中对应的就是节点和关系 在图数据
  • layui table is not a valid module

    table is not a valid module 后来发现 是因为layui是个库 引用的时候需要引用整个库 而不是只引用单个文件
  • 在MaxOSX系统上安装gdb并给gdb制作证书

    在MacOSX系统上是默认没有安装gdb的 这给MacOSX应用开发人员调试OSX应用程序带来一定困难 因此在MacOSX上安装gdb对应用程序进行调试是一个很好的选择 但是在MacOSX上安装gdb并不想在Linux上那么容易安装 他有一