LoginSignup
1
1

More than 3 years have passed since last update.

Mac(Catalina)でgdbを動かす方法

Last updated at Posted at 2020-08-09

macでgdbを動かそうとしたらうまく行かなかったので試行錯誤した記録です。

実行環境 macOS Catalina ver-10.15.6

homebrewを使ってgdbをインストールし、githubから拡張のpedaもインストールしました。
いざ動かそうと思ったら

gdb
Unable to find Mach task port for process-id 923: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))

という文字が。
gdbにコード署名をしないと使えないようです。

コード署名をする   (参考ページhttps://sira.dev/2019/09/17/macos-gdb-codesign.html )

まず参考ページにある通りに自己署名証明書を作りました。
「最後に,作成した証明書を選択し,”When using this certificate” を “Always Trust” に変更する.」という部分がわからなかったのですが、(https://www.ssk.or.jp/seikyushiharai/rezept/iryokikan/download/index.files/tejunsyo_m.pdf )に書いてありました。

次にコード署名ですが

zsh
$ sudo codesign -fs gdb-cert $(which gdb)

で簡単にできました。

実はこれだけでは

gdb
 During startup program terminated with signal ?, Unknown signal

と出て正常に動作しません。

そこで.gdbinitにset startup-with-shell offと書き込みます。

zsh
 $ echo "set startup-with-shell off" >> ~/.gdbinit

.gdbinitはgdbの初期化スクリプトファイルで起動時に定型コマンドを自動で実行できるとのこと。
pedaをインストールすれば勝手にできていますし、なければホームディレクトリに作ればよいです。
これで、gdbが動くようになりました。(頭にsudoをつけないとコード署名されてない判定になって動きません。)

pedaを入れている場合はノーマルなgdbを起動するときに

zsh
 $ sudo gdb --nx

と打つことになると思いますが、これは.gdbinitを無視することでpedaに切り替えないようにしています。
そのためgdbを起動したのち、

gdb
 set startup-with-shell off

と打ち込まないと正常に動作しません。

まとめ
参考ページにはCatalinaではgdbは正常に動かない問題があるとのことでしたが、ちゃんと動きました。
結果的に解決しましたが、面倒臭かったので、ubuntuを使うのをお勧めします。

1
1
0

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
1
1