Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
127
Help us understand the problem. What is going on with this article?
@takahashim

OS XでGDBを使う(ためにコード署名をする)

More than 5 years have passed since last update.

Mac OS Xでの標準デバッガはlldbになりましたが、GDBを使いたいこともあるかと思います。

そのような場合、HomebrewやMacPortsでインストールすることができます。が、最近のOS Xではそのまま起動しようとすると以下の様なエラーが出て、実行できない場合があります。

(gdb) run
Starting program: /Users/maki/tmp/a.out 
Unable to find Mach task port for process-id 910: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

これはメッセージの通り、gdbコマンドがcodesignされていないのが原因です。GDBにコード署名する必要があります。

コード署名の仕方

証明書の作成

まず、「キーチェーンアクセス」を開きます。

$open -a "Keychain Access.app"

「キーチェーンアクセス」メニューの「証明書アシスタント」から「証明書を作成...」を選択します。

「証明書を作成...」を選択

名前を適当につけ(ここではgdb-certにしています)、「自己署名ルート」「コード署名」を選択し、「デフォルトを無効化」にチェックを入れます。

証明書を作成

「続ける」ボタンを押すと警告が出ますが、そのまま進みます。

警告は無視する

そのまま「続ける」を押して進めます。拡張鍵用途選択領域では「コード署名」にチェックを入れます。

「コード署名」を選択

証明書の場所を指定では「システム」を選択します。

システムを指定

これでコード署名用の自己署名証明書が作られます。「完了」ボタンを押します。

証明書

証明書の信頼設定の変更

さらに、作成された証明書をダブルクリックで開いて、「信頼」を開き、コード署名のところを「常に信頼」にします。

常に信頼を選択

taskgatedの再起動

ここで証明書を閉じて、キーチェーンアクセスを終了します。そして、taskgatedをいったん終了させて、再起動させます。

GDBへのコード署名

最後に、GDBにコード署名します。MacPortsのGDBはggdbになっているのに注意。

$ sudo codesign -s gdb-cert /opt/local/bin/ggdb

Homebrewなら、

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

になるはずです。

これで、OS XでもGDBが使えるようになります。

参考

127
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
takahashim
Rubyist. Founder and CEO of Tatsu-zine Publishing Inc.

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
127
Help us understand the problem. What is going on with this article?