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.pswp.cn/news/397354.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397354.shtml
英文地址,請注明出處:http://en.pswp.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…