MAC上使用gdb(Mac10.12未解决)
由于要在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))
The specified item could not be found in the keychain.
3.
During startup program terminated with signal SIG113, Real-time event 113`
4.
我们一个个来解决。
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未解决)相关推荐
- mac itunes 未能连接到服务器,iPhone 11无法在Mac上连接到iTunes吗?解决方法
一些iPhone 11,iPhone 11 Pro和iPhone 11 Pro Max用户发现iTunes无法识别连接到Mac的新iPhone.相反,使用通过USB电缆连接的iPhone 11或iPh ...
- Tomcat 在mac上(Idea)端口冲突解决办法
Port already in use: 1099 在mac上解决办法直接是找到占用1099端口的pid: 解决方式: lsof -i:1099 回车,之后会有pid,然后执行 kill (pid号) ...
- mac上Matlab怎么运行不了,解决macOS系统下matlab无法访问中文路径及中文乱码问题...
博主使用的matlab为2016a版本,首先通过feature('locale')命令,查看当前系统所用语言,如下图所示: 其中通过ctype: 'zh_CN.UTF-8'知道当前系统语言为" ...
- 如何优雅的在 Mac 上安装fiddler [无需mono - 完美解决]
订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量43 ...
- Mac上vmfusion ubuntu无法复制粘贴的解决办法
Mac上vmfusion无法复制粘贴的解决办法 1.如果你是刚刚在vmfusion中装好ubuntu,那么你应该需要安装vmtools,然后在主机/系统便好设置/安全性与隐私里面给一些权限 2.如果你 ...
- macbook上使用gdb
由于要在mac上制作自己的malloc动态存储分配器,要使用gdb进行调试,之前一直在centos上用gdb调试,转到mac上竟然发现有这么多坑,还好一一解决了,其原因大多数因为mac上非常关注程序安 ...
- 哪个u盘格式win和mac都能用 mac上插u盘怎么没反应
由于工作原因,很多人的u盘要在Mac系统和Windows系统之间共同使用,应该有很多用户遇到过u盘在Windows系统可以正常使用,但是u盘插入Mac电脑就遇到各种各样的问题,例如:插入没反应.无法写 ...
- mac 上mysql怎么卸载不了_mac上mysql怎么卸载不了
mac上mysql卸载不了的解决办法:首先打开终端窗口:然后使用mysqldump备份数据库:接着停止数据库服务器:最后依次执行命令"sudo rm /usr/local/mysql...& ...
- Mac 上怎么双开微信
Mac 上怎么双开微信?逆向解决太麻烦了,大多数人都不懂编程. 使用 open -n ,直接在终端输入: open -n /Applications/WeChat.app/Contents/MacOS ...
最新文章
- 开发环境中实现Lombok消除Java冗余
- Hash冲突处理终极版
- 三维重建9:点云图像的滤波方法小结
- 前端学习(3300):三种usecontent的
- free命令里的buffers/cache
- linux网卡聚合软件下载,linux网卡聚合
- 如何dos中查看当前MySQL版本信息?
- Python.Algorithms(2nd)pdf
- 鏖战双十一:阿里直播平台面临的技术挑战
- Android多语言设置
- 华为OD机试 - 荒地(Java JS Python)
- 联想v360安装linux双系统,联想V360在WIN7下安装XP双系统完美运行攻略.doc
- PL读写DDR3 实现PS和PL间的数据交互 代码分析
- AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第10章:ORGANIZING FILES
- stm32 + RN8209C单相计量芯片使用心得
- Codeforces Round #143 (Div. 2) (ABCD 思维场)
- Ignite GridTaskWorker 执行分析
- java 设计模式之解释器模式(十九)
- java画五子棋盘_Java实现两人五子棋游戏(二) 画出棋盘
- 爬虫之 json 数据处理