1 安装homebrew
参考 https://www.cnblogs.com/suren2017/p/9249803.html (【Ruby】【环境搭建】macOS Sierra 10.12.6 + Xcode 8 + gpg 2.2.8 + rvm 1.29.3 + Ruby 2.4.0 + RubyMine 2018.1.4)

2 安装gdb
brew update

brew search gdb 有的话就执行下面的 一般情况是有的

brew install gdb

Install gdb 8.0.1: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb 为避免遇到During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.问题

3 钥匙串

打开钥匙串访问 -> 创建证书 名字自定义 “身份类型”:自签名根证书 “证书类型”:代码签名

注意一定钥匙代码签名,英文名是codesign,上面的名称随意,这个跟你后面的命令行键入的名称有关,接下来,一直往下

"指定该证书的位置" 把这个钥匙串改成system

双击,将信任改成始终信任:

中间要输入密码之类的,输入就是了。

退出Keychain Access以刷新存储证书

OK,只差最后一步
重启电脑。
然后在命令行上输入:

codesign -fs gdb-cert-hekewen /usr/local/bin/gdb

4 echo "set startup-with-shell off" >> ~/.gdbinit

【gdb遇到的问题】

1 During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.

解决方式,回退gdb版本至8.0.1

Unlink current gdb: brew unlink gdb

Install gdb 8.0.1: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb

2 During startup program terminated with signal SIG113, Real-time event 113
这个错误好像只有在高版本的OSX系统上才出现,解决办法就是在gdb启动的时候,键入命令

set startup-with-shell off

就解决了
当然,如果这样,你每次在调试的时候都要键入,这时候你就可以添加到.gdbinit,每次运行gdb的时候都执行一次。
关于.gdbinit,就是在你每次用gdb调整程序的时候,如果程序文件中有.gdbinit,就会自动读取里面的命令,全部执行一遍。
于是乎,我们只要用vim在程序文件里面创建一个.gdbinit,并在里面写上set startyup-with-shell off
就解决了。

3 钥匙串问题
https://www.cnblogs.com/suren2017/p/10469284.html (【Mac】【创建钥匙串】)

4 Starting program: /x/y/foo Unable to find Mach task port for process-id 28885: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8))

方法一: 这个原因是mac不允许没有给予许可的进程来调试其它进程,那解决办法自然就想到了root,来个根权限。但是,这个会影响到万一gdb调试了重要内核程序后果不是我们想要的,没有安全证书,我们就自己添加一个安全证书:
首先打开钥匙串访问 -> 创建证书 名字自定义 “身份类型”:自签名根证书 “证书类型”:代码签名

注意一定钥匙代码签名,英文名是codesign,上面的名称随意,这个跟你后面的命令行键入的名称有关,接下来,一直往下

"指定该证书的位置" 把这个钥匙串改成system

双击,将信任改成始终信任:

中间要输入密码之类的,输入就是了。

退出Keychain Access以刷新存储证书

OK,只差最后一步
重启电脑。
然后在命令行上输入:

codesign -fs gdb-cert-hekewen /usr/local/bin/gdb
这个gdb-cert-hekewen,要改成你的证书名,后面就是gdb位置。
没有报错就是成功了。

方法二:
Mac OS Sierra 无法使用gdb调试

Unable to find Mach task port for process-id 47072: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
During startup program terminated with signal SIG113, Real-time event 113.

如果是用Homebrew安装的gdb,brew install gdb,安装完有提示

gdb requires special privileges to access Mach ports.
You will need to codesign the binary. For instructions, see:
https://sourceware.org/gdb/wiki/BuildingOnDarwin

On 10.12 (Sierra) or later with SIP, you need to run this:
echo “set startup-with-shell off” >> ~/.gdbinit

在macOS上,gdb使用Mach ports需要特殊权限
你需要对二进制文件进行签名。指导步骤,查看:
https://sourceware.org/gdb/wiki/BuildingOnDarwin

在10.12 (Sierra) 或之后带SIP的操作系统版本,你还需要运行这个命令:
echo “set startup-with-shell off” >> ~/.gdbinit

解决方法

具体操作,按照https://sourceware.org/gdb/wiki/BuildingOnDarwin步骤2开始

2. Giving gdb permission to control other processes

启动 /Applications/Utilities/Keychain Access.app
顶部菜单选择 /Keychain Access/Certificate Assistant/Create a Certificate…
Create Your Certificate
Name: gdb-cert
Identity Type: Self Signed Root
Certificate Type: Code Signing
勾选 Let me override defaults
一直按continue,直到Specify a Location For The Certificate
Keychain: System
tips: 如果无法将Certificate保存到System keychain,就先保存到login keychain,然后导出,再导入到System keychain。
Create
如附图,右键选择gdb-cert的Get Info,打开Trust项,将Code Signing改成Always Trust
最后退出Keychain Access以刷新存储证书
codesign gdb,执行
codesign -fs gdb-cert $(which gdb)
macOS 10.12 (Sierra) 或以上版本的操作系统
需要使用 gdb 7.12.1 之上的版本
此外,为防止gdb利用shell来启动程序开始debug,执行下面的语句
echo "set startup-with-shell off" >> ~/.gdbinit
重启系统

【GO】【gdb】的更多相关文章

  1. 【程序员小助手】Emacs,最强编辑器,没有之一

    内容简介 1.Emacs简介 2.Emacs三个平台的安装与配置 3.自动补全插件 4.小编的Emacs配置文件 5.常用快捷方式 6.和版本控制系统的配合(以SVN为例) [程序员小助手]系列 在这 ...

  2. 【GO】【环境配置】

    1.首先下载GO的安装包:https://golang.org/doc/install#testing 找到上面一个Download超大按钮,找不到的可以不用再看了. 下载完成,安装. 安装成功后,启 ...

  3. “500 oops socket” Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)【成功完美简单极致】

    "500 oops socket" Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)[成功完美简单极致] #自 ...

  4. Linux从头学15:【页目录和页表】-理论 + 实例 + 图文的最完全、最接地气详解

    作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++.嵌入式.Linux. 关注下方公众号,回复[书籍],获取 Linux.嵌入式领域经典书籍:回复[PDF],获取所有原创文章( PDF 格式). ...

  5. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  6. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  7. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

  8. 【AutoMapper官方文档】DTO与Domin Model相互转换(上)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  9. 【Win 10 应用开发】应用预启动

    所谓预启动,其实你一看那名字就知道是啥意思了,这是直接译,也找不到比这个叫法更简练的词了.在系统资源允许的情况下(比如电池电量充足,有足够的内存空间),系统会把用户常用的应用程序在后台启动,但不会显示 ...

随机推荐

  1. 前端混淆--JavaScript Obfuscator

    引言: 前端代码是直接暴漏在浏览器中的,很多web攻击都是通过直接debug业务逻辑找到漏洞进行攻击,另外还有些喜欢“不劳而获”的分子暴力盗取他人网页简单修改后用来获利,总体上来说就是前端的逻辑太容易 ...

  2. 使用paginate分页后数据处理

    public function index(){ $sql = ""; $list = ""; $pagenumber = 20;//默认分页条数 //查询数据 ...

  3. 创建vs离线安装程序(不联网安装vs)

    https://blog.csdn.net/u013064585/article/details/80996933

  4. Sublime 个人配置

    Sublime 个人配置 用的faltland主题,之后还加了一些自己喜欢的东西. 效果图如下: { "always_show_minimap_viewport": true, & ...

  5. linux----------linux下安装rar和unrar命令

    1.wget http://www.rarlab.com/rar/rarlinux-x64-4.2.0.tar.gz 2.tar xf rarlinux-x64-4.2.0.tar.gz    解压下 ...

  6. C#学习笔记(2)

    1.获取当前可用串口端口号 using System.IO.Ports; string[] portNames = SerialPort.GetPortNames(); 2.TextBox换行.设置光 ...

  7. 2017 6 2php用PDO链接数据库前测试

    try { $dsn = "mysql:dbname=test;host=127.0.0.1";//链接mysql的DSN(数据库驱动) $user = 'root';//Mysq ...

  8. C#的抽象类和接口,区别与相似

        一.抽象类:抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们 ...

  9. vs2017 .net core 项目调试浏览器网页闪退Bug

    from:https://blog.csdn.net/qq_36330228/article/details/82152187 vs更新2017最新版本后,项目调试浏览器莫名其妙出现闪退,每次都TMD ...

  10. windows中启动和终止nginx的两个批处理

    文件:start_nginx.bat 内容: set nginx=D:\nginx-1.9.5\set php=D:\php\start /MIN %nginx%nginx.exestart /MIN ...