MacOS 安装 gdb 踩过的坑
时间:2022-06-20
本文章向大家介绍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
- 身份类型:自签名根证书
- 证书类型:代码签名
- 勾选:让我覆盖这些默认值
然后一直点击继续,直到指定证书位置的步骤,选择钥匙串保存的位置是系统 点击创建,输入系统密码,创建完成。(极有可能创建失败,这时可以选择钥匙串保存位置为登录,然后导出证书,再然后把证书导入到系统) 打开证书简介界面,点击信任->代码签名,将其改为始终信任
- 重启系统刷新系统证书和代码签名数据
- 给 gdb 签名 $ sudo killall taskgated $ codesign -fs gdb-cert "$(which gdb)" # -f 表示签名若已存在就覆盖
- 添加 ~/.gdbinit 文件 $ echo "set startup-with-shell off" >> ~/.gdbinit
- 最后会出现如下错误 $ 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
测试成功如下:
参考文献
- http://panks.me/posts/2013/11/install-gdb-on-os-x-mavericks-from-source/
- http://andresabino.com/2015/04/14/codesign-gdb-on-mac-os-x-yosemite-10-10-2/
- https://sourceware.org/gdb/wiki/BuildingOnDarwin
- https://stackoverflow.com/questions/49222683/how-do-i-install-gdb-on-macos-10-13-3-high-sierra
- 微信文件微起底
- Go语言TCP Socket编程--1
- Go语言TCP Socket编程--2
- 服务器 数据库设计技巧--1
- CVE-2015-0235:Linux glibc高危漏洞的检测及修复方法
- zabbix监控在lnmp环境下编译安装小记
- 【重磅】百度开源分布式深度学习平台,挑战TensorFlow (教程)
- WordPress评论ajax动态加载,解决静态缓存下评论不更新问题
- WordPress显示访客UA信息:Show UserAgent纯代码轻度汉化版
- WordPress开启颜色评论但不造成XSS漏洞的小方法
- WordPress强迫症技巧:让文章(ID)地址完美连续(障眼法)
- iOS内存管理:从MRC到ARC实践
- MySQL错误修复:Table xx is marked as crashed and last (automatic?) repair failed
- PHP跨站脚本攻击(XSS)漏洞修复方法(一)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 「高并发通信框架Netty4 源码解读(七)」NIO通道之Selector选择器
- Python与seo工具脚本,360/搜狗相关搜索词采集源码参考
- 逐行阅读Spring5.X源码(八)Mybatis是如何利用MapperScan完成扫描的?
- KEDA|Kubernetes中基于事件驱动的自动伸缩
- 「高并发通信框架Netty4 源码解读(八)」NIO应用——聊天案例及Reactor线程模式
- 「kafka」kafka-clients,java编写生产者客户端及原理剖析
- 「kafka」kafka-clients,java编写消费者客户端及原理剖析
- Kubernetes:如何自动检测和处理弃用的API
- 逐行阅读Spring5.X源码(九)spring利用CGLIB实现动态代理原理剖析
- 逐行阅读Spring5.X源码(十)spring如何解决循环引用,bean实例化过程源码详解
- 逐行阅读Spring5.X源码(十一)AOP概念、应用、原理
- java当中的线程和操作系统的线程是什么关系?
- 基于OpenCV 的车牌识别
- Redis入坟(六)分布式集群,概念、原理、实操
- Redis入坟(一)redis的前世今生、redis基础及存储结构源码讲解