由于要在mac上制作自己的malloc动态存储分配器,要使用gdb进行调试,之前一直在centos上用gdb调试,转到mac上竟然发现有这么多坑,还好一一解决了,其原因大多数因为mac上非常关注程序安全性的问题。 
主要会碰到的问题主要有如下问题,如果大家发现如下的问题就可以接着看下去: 
1.-bash: gdb: command not found 
2. `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)) 
3.
The specified item could not be found in the keychain. 
4.
During startup program terminated with signal SIG113, Real-time event 113`

我们一个个来解决。 
1. -bash: gdb: command not found 
这个原因在于你的mac上根本没有下载gdb这个调试工具。那么,解决办法也很简单,把gdb下载下来。 
使用mac自带的brew管理工具。当然,要先更新一下homebrew的软件库。

brew update
  • 1

然后检查一下homebrew软件库里面有没有gdb

brew search gdb
  • 1

如果有的话,就会有如下图片展示: 
 
有的话,进行安装

brew install gdb
  • 1

如果要权限的话就加个sudo。 
安装成功之后,键入gdb查看是否安装成功

安装成功之后,我们是不是就可以大功告成开始调试了呢。。?往往事实是残酷的。 
 
在第一次安装的往往出现剩下四个问题。 
现在来看第二个问题:

Starting program: /x/y/fooUnable 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,然后创建由于我已经创建过了,这里就不显示出来了。 

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

中间要输入密码之类的,输入就是了。 
OK,只差最后一步 
重启电脑。 
然后在命令行上输入:

codesign -s gdb-cert-hekewen /usr/local/bin/gdb
  • 1

这个gdb-cert-hekewen,要改成你的证书名,后面就是gdb位置。 
没有报错就是成功了。 
3.The specified item could not be found in the keychain. 
这个就是在钥匙串里面没有找到该签名,这个错误往前面看你的安全证书是否按照上面的步骤解决,特别注意证书名字,证书类型,信任,系统,这些有没设置成功。

4.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 
就解决了。 
终于,我们可以开心的在mac上使用gdb了。

MAC上使用gdb(Mac10.12未解决)相关推荐

  1. mac itunes 未能连接到服务器,iPhone 11无法在Mac上连接到iTunes吗?解决方法

    一些iPhone 11,iPhone 11 Pro和iPhone 11 Pro Max用户发现iTunes无法识别连接到Mac的新iPhone.相反,使用通过USB电缆连接的iPhone 11或iPh ...

  2. Tomcat 在mac上(Idea)端口冲突解决办法

    Port already in use: 1099 在mac上解决办法直接是找到占用1099端口的pid: 解决方式: lsof -i:1099 回车,之后会有pid,然后执行 kill (pid号) ...

  3. mac上Matlab怎么运行不了,解决macOS系统下matlab无法访问中文路径及中文乱码问题...

    博主使用的matlab为2016a版本,首先通过feature('locale')命令,查看当前系统所用语言,如下图所示: 其中通过ctype: 'zh_CN.UTF-8'知道当前系统语言为" ...

  4. 如何优雅的在 Mac 上安装fiddler [无需mono - 完美解决]

    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...

  5. Mac上vmfusion ubuntu无法复制粘贴的解决办法

    Mac上vmfusion无法复制粘贴的解决办法 1.如果你是刚刚在vmfusion中装好ubuntu,那么你应该需要安装vmtools,然后在主机/系统便好设置/安全性与隐私里面给一些权限 2.如果你 ...

  6. macbook上使用gdb

    由于要在mac上制作自己的malloc动态存储分配器,要使用gdb进行调试,之前一直在centos上用gdb调试,转到mac上竟然发现有这么多坑,还好一一解决了,其原因大多数因为mac上非常关注程序安 ...

  7. 哪个u盘格式win和mac都能用 mac上插u盘怎么没反应

    由于工作原因,很多人的u盘要在Mac系统和Windows系统之间共同使用,应该有很多用户遇到过u盘在Windows系统可以正常使用,但是u盘插入Mac电脑就遇到各种各样的问题,例如:插入没反应.无法写 ...

  8. mac 上mysql怎么卸载不了_mac上mysql怎么卸载不了

    mac上mysql卸载不了的解决办法:首先打开终端窗口:然后使用mysqldump备份数据库:接着停止数据库服务器:最后依次执行命令"sudo rm /usr/local/mysql...& ...

  9. Mac 上怎么双开微信

    Mac 上怎么双开微信?逆向解决太麻烦了,大多数人都不懂编程. 使用 open -n ,直接在终端输入: open -n /Applications/WeChat.app/Contents/MacOS ...

最新文章

  1. 开发环境中实现Lombok消除Java冗余
  2. Hash冲突处理终极版
  3. 三维重建9:点云图像的滤波方法小结
  4. 前端学习(3300):三种usecontent的
  5. free命令里的buffers/cache
  6. linux网卡聚合软件下载,linux网卡聚合
  7. 如何dos中查看当前MySQL版本信息?
  8. Python.Algorithms(2nd)pdf
  9. 鏖战双十一:阿里直播平台面临的技术挑战
  10. Android多语言设置
  11. 华为OD机试 - 荒地(Java JS Python)
  12. 联想v360安装linux双系统,联想V360在WIN7下安装XP双系统完美运行攻略.doc
  13. PL读写DDR3 实现PS和PL间的数据交互 代码分析
  14. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第10章:ORGANIZING FILES
  15. stm32 + RN8209C单相计量芯片使用心得
  16. Codeforces Round #143 (Div. 2) (ABCD 思维场)
  17. Ignite GridTaskWorker 执行分析
  18. java 设计模式之解释器模式(十九)
  19. java画五子棋盘_Java实现两人五子棋游戏(二) 画出棋盘
  20. 爬虫之 json 数据处理

热门文章

  1. 唐雄燕点评NFV产业进程:2016年将迎来试点年
  2. Go语言极速入门手册
  3. json字符串与js对象转换
  4. Cisco IPSec *** 配置详解
  5. 基于CentOS7上的搭建javaweb环境 - 学习笔记
  6. Lucene中的一些基本概念
  7. Java中的Set, List, Map漫谈
  8. 学习Android 应注意的十个问题
  9. java 调用gpu_GPU使用设置
  10. SSM框架-实现模糊查询-foreknow_cms