LoginSignup
136

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-11-24

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が使えるようになります。

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
136