読者です 読者をやめる 読者になる 読者になる

handlename's blog

コード片など

Macでgdbにプロセスの制御権を与える

前回の記事で出ていたエラーメッセージについて、解決したので。

darwingdbを使って デバッグする = プロセスを制御する ためには権限が必要なんだそうです。

Building GDB for Darwin - GDB Wiki

なので、gdbを実行するときに

$ sudo gdb hogehoge

とすればデバッグはできるのですが、わざわざ管理者権限でデバッグするのは嫌><!ということで、証明書をつくってプロセスの制御を許可する、というのがスマートな方法らしいです(ということがまんま上記のページに書いてあります:p)
せっかくなので証明書のつくりかたと登録の方法をSS入りで。

証明書の作成

キーチェーンアクセスでつくります。

キーチェーンを起動して、
f:id:handlename:20110812080722p:image

キーチェーンアクセス > 証明書アシスタント > 証明書を作成...

を選択。
f:id:handlename:20110812080723p:image

  • 名前: gdb-cert (わかればなんでもいい)
  • 固有名のタイプ: 自己署名ルート
  • 証明書のタイプ: コード署名
  • デフォルトを無効化: チェックを入れる

f:id:handlename:20110812080727p:image

として「次へ」。
「証明書の場所を指定」の画面になるまで「次へ」でOK。

「証明書の場所を指定」の画面になったら

  • キーチェーン: システム

として「作成」。
f:id:handlename:20110812080724p:image

証明書の設定

キーチェーンから先ほどの gdb-certの証明書 を探し出して、プロパティから「情報を見る」を選択。
f:id:handlename:20110812080725p:image

「信頼」の項目について、

  • コード署名: 常に信頼

f:id:handlename:20110812080726p:image

としてウィンドウを閉じる。

これで証明書の準備はOK。

証明書の登録

作成した証明書をgdbの実行時に使うように設定。

$ codesign -s gdb-cert `which gdb`

以上で gdb で sudo せずにデバッグできるようになります。