mac安装gdb及为gdb进行代码签名

1. 安装gdb

GDB作为一个强大的c/c++调试工具,一直是程序猿们的良好伴侣,但转到Mac os才发现竟然没有默认安装,所幸还有强大的homebrew工具:

brew install homebrew/dupes/gdb

然后就是漫长的等待+编译安装时间了,安装完成后敲击gdb能打印出版本信息,说明已经正确安装了:

Screen Shot 2014-11-24 at 01.04.15

如果现在就使用gdb进行程序调试的话会发现,根本行不通:

Screen Shot 2014-11-24 at 01.08.24

 

2. 生成证书

这是由于Mac os的安全机制阻止了我们的gdb对要调试的程序进行完全控制,对此我们要对gdb赋予合适的权限,首先我们要在keychain access里面添加相应的keychain (钥匙串):

create-cert-menu1

然后在下面的输入框中输入证书的名字及类型等:

create-cert-1

指定有效期:

create-cert-2

一路"continue",知道出现为我们的证书选择位置(Specify a Location for the Certificate)的时候注意:这里选"system"(如果这里无法选择system,选login也是可以的,只不过再生成相应证书后需要手动导出证书,然后再手工把gdb-cert导入到System中去):

create-cert-3

好了,“create”之后我们的证书就生成成功啦d

create-cert-4

接下来,我们选择"always trust"我们刚生成的证书,这样就不用每次在运行gdb的时候手工输入管理员密码了:

cert-get-info cert-always-trust

 3. 对gdb进行证书签名

完成上述步骤以后就可以退出keychain access了,但仅仅这样还是不够的,要对gdb进行签名,我们还需要杀死一个特殊的进程:

Screen Shot 2014-11-24 at 01.33.49

 

打开activity monitor, 在cpu一栏的搜索框中输入‘taskgated’,然后双击进程所在行,点选‘quit’,这是你会发现taskgated进程消失了(好无辜的一个进程:( )。现在就可以对gdb进行签名了:

codesign -s gdb-cert /usr/local/bin/gdb

其中‘/usr/local/bin/gdb’是gdb在我的电脑中所在的位置(其实它是'/usr/local/Cellar/gdb/7.8.1/bin/gdb'的一个软链接),此命令正常执行无任何输出。

注:如果某天想要取消对gdb的证书签名,可以使用‘codesign --remove-signature /usr/local/bin/gdb’来完成,前提是你的gdb-cert签名还在哦。

好了现在可以使用gdb进行调试了么,且慢!

把taskgated进程再杀死一次先(是的,顽强的taskgated在后台刚刚重新启动又要被我们给杀死了:( )

至此,才算是功德圆满,赶紧用gdb试着运行下我们的程序吧:

Screen Shot 2014-11-24 at 01.43.55

4. 参考链接:

https://sourceware.org/gdb/wiki/BuildingOnDarwin

http://ntraft.com/installing-gdb-on-os-x-mavericks/

转载于:https://www.cnblogs.com/zhenxi/p/4932874.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习---Django的基础操作180116

Django创建数据库操作 django流程之model实例 settigs.py:更改Django2.0.1的配置,更新为之前的路径配置 DIRS: [os.path.join(BASE_DIR, templates)], # 设置templates的路径为Django以前版本 # DIRS: [], # 注释掉该行,此为Django 2.0…

PO、VO、DAO、BO、POJO

一、PO :(persistant object ),持久对象 可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。二、VO :(value object) ,值对象通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对…

计算机网络是将地理知识,计算机网络的基础知识精选.ppt

计算机网络的基础知识精选习题演练 1,WAN的中文含义是()。   A. 局域网   B. 城域网 C. 广域网   D. 增值网 2,LAN的中文含义是()。   A. 局域网 B. 城域网 C. 广域网 D. 增值网 3,MAN的中文含义是()。   A. 局域网   B. 城域网 C…

VBA——Msgbox

MsgBox(prompt[,buttons][,title][,helpfile,context]) 参数说明 prompt - 必需的参数。在对话框中显示为消息的字符串。提示的最大长度大约为1024个字符。 如果消息扩展为多行,则可以使用每行之间的回车符(Chr(13))或换行符(Chr(10))来分隔行。buttons - 可选参数。…

订阅Jenkins的邮件列表,获取最新的信息

进入https://jenkins.io/content/mailing-lists/ 点击感兴趣的话题 选择【archive】跳转到谷歌讨论组 最后,点击左上角的【Subscribe】即可加入Google Groups 备注:其实谷歌讨论组是一个很好用的东西,每个人都可以上去建,对于集成…

内存的管理方式

1、内存的区域 对于内存的区域划分上,不同的区域划分上都各有不同。 划分1: 代码区、堆、栈、 全局区(静态存储区)、 文字常量区、 划分2: 代码段、堆、栈、 data段、BSS段、文字常量区 全局区: 又成为静…

英语四六级和计算机二级是一,大学里最难考证书排名,四六级和计算机根本排不进前三...

大学是我们提高自身技能最好的一个时期,除了平时的课程和一些社团活动之外,还有一件最最必不可少的事情,那就是考证,而这也是为我们以后工作打好基础,为自己多准备一些敲门砖。我国各个行业都有属于自己的证书&#xf…

Scrapy爬虫中的链接提取器LinkExtractor

今天在编写Scrapy爬虫的时候接触到了LinkExtractor,遂学习了一下这个链接提取器。 Link Extractors 是那些目的仅仅是从网页(scrapy.http.Response 对象)中抽取最终将会被follow链接的对象。使用场景就是在一个网站中通过自定义规则提取到自己想要的那些网…

Fedora 安装后需要做的第一件事

一直以来,Red Hat 系的许多教程,都会建议你关闭 SELinux。确实,启用 SELinux 可能会造成许多莫名其妙的错误。但在实际生产环境,甚至是用户工作站,Red Hat 都建议将 SELinux 设为 enforcing 模式,因为它在关…

html文件怎么导出stl文件,各种3D建模软件导出STL文件的小技巧(一)

很多用户在提交3D模型文件的时候,常常有这样的困惑:什么是STL 格式文件,怎么获取STL 格式文件呢?STL 格式文件是在计算机图形应用系统中,用于表示三角形网格的一种文件格式。它也是3D打印机在执行3D打印程序时&#xf…

angularjs 中的scope继承关系——(2)

转自&#xff1a;http://www.lovelucy.info/understanding-scopes-in-angularjs.html angularjs 中的scope继承关系 ng-include 假设在我们的 controller 中&#xff0c; $scope.myPrimitive 50; $scope.myObject {aNumber: 11}; HTML 为&#xff1a; <script type&quo…

C# DatatTable某一列是否有重复判断

public bool HasRepeatData(DataTable dt,string[] colName) { bool flagfalse; DataView myDataView new DataView(dt); if (myDataView.ToTable(true, colName).Rows.Count < dt.Rows.Count) { flag true; } return flag; }转载于:https://www.cnblogs.com/clj0102/p/93…

cordova 项目添加splash启动界面

需求&#xff1a;cordova项目启动添加启动界面&#xff0c;并在设备初始化完成后自动隐藏splash1.新建项目cordova create Mypro com.test.pro proName2.添加平台cd Mypro&#xff08;进入目录&#xff09;cordova platform add androidcordova platform add iOS3.添加splash插…

辽宁大学计算机专业接收调剂,目前有计算机专业调剂通知的学校,不断更新—3月26日更新,新增辽宁大学等...

本帖最后由 yunnyforo 于 2012-3-26 21:16 编辑注&#xff1a;我对研究所关注度不高&#xff0c;关于研究所的调剂通知可能不及时&#xff0c;见谅。大家可以关注中国教育在线考研调剂信息站&#xff1a;http://kaoyan.eol.cn/html/ky/tiaoji/index.shtml&#xff0c;个人感觉这…

Android界面菜单(4)—快捷菜单

2019独角兽企业重金招聘Python工程师标准>>> 快捷菜单 当用户点击界面上某个元素超过2秒后&#xff0c;将启动注册到该界面的快捷菜单。 步骤&#xff1a; 1.代码动态生成菜单 final static int CONTEXT_MENU_1 Menu.FIRST;final static int CONTEXT_MENU_2 Menu…

Echarts地图编写

1.引入echarts库文件 <script charset"utf-8" type"text/javascript" language"javascript" src"echarts-2.2.7/doc/example/www/js/echarts.js"></script> 2.在页面中新建div用于地图展示 <div id"main" st…

迷宫游戏 堆栈实现

#include<iostream> #include<string> #include<stack> using namespace std; #define n 8stack <int *> s;int * createMaze(){//初始化迷宫int i,j;int * a;anew int[n*n];for(i0;i<n;i){for(j0;j<n;j){*(an*ij)-1;//不设置为0的原因是超过矩阵…

威海职业学院计算机专业宿舍,2021年威海职业学院新生宿舍条件和宿舍环境图片...

每年高考结束后&#xff0c;威海职业学院新生被录取同学们陆续都到校报到~而宿舍作为同学们朝夕相处之场所&#xff0c;如果不懂相处之道&#xff0c;难免会摩擦不断&#xff0c;更有甚者堪比宫斗大戏。所以各位大学新生一定要珍惜室友之间的友情&#xff0c;彼此处好关系。本文…

PostgreSQL 函数调试、诊断、优化 auto_explain

PostgreSQL 函数调试 & auto_explain 作者 digoal 日期 2016-11-21 标签 PostgreSQL , pldebugger , 函数调试 , auto_explain 背景 PostgreSQL的服务端编程能力比较强&#xff0c;不仅支持像java, R, python这种流行的编程语言&#xff0c;另外还内置了一个与Oracle plsql…

判断请求来自手机还是PC

由于小程序和PC端用的是同一个后台 所以就需要判断请求是从哪里发过来的 在这里是利用Request Body 里面的user-agent 来判断 /** * 根据当前请求的特征&#xff0c;判断该请求是否来自手机终端&#xff0c;主要检测特殊的头信息&#xff0c;以及user-Agent这个header * * pa…