Skip to content
Go back

GDB pretty-printing

· Updated:
  • GDBでSTLコンテナを確認するとき、実装がそのまま見えてしまってデバッグし辛い
  • GDBには変数の表示を整形する機能があるので、それを使うと良い
    • libstdc++にSTLの実装を隠すためのスクリプトが付属している
  • .gdbinitで表示改善スクリプトを読み込むようにすると、GDBの起動時にそれらが設定される
    • .gdbinit$HOMEに置く
    • パスはgccかlibstdc++にあるpythonディレクトリを指定する
python
import sys

sys.path.insert(0, "<pythonディレクトリへのパス>")
from libstdcxx.v6.printers import register_libstdcxx_printers

register_libstdcxx_printers(None)
end
  • 起動時に整形機能を有効にするため、vscodeのlaunch.jsonsetupCommands{"text": "-enable-pretty-printing", "ignoreFailures": true},を追加する
  • 稀に、GDBがPython機能を無効にしてビルドされている場合もあったりするので注意