web-dev-qa-db-ja.com

GDBがクラッシュします:ImportError:libstdcxx.v6.printersというモジュールはありません

GDBに問題があります。 C++プログラムを実行した直後にデバッグしようとすると、GDBは次のエラーを出します。

(gdb) run
Starting program: /home/errikos/Workspaces/tests/a.out 
Traceback (most recent call last):
  File "/usr/lib/debug/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.18-gdb.py", line 59, in <module>
    from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named libstdcxx.v6.printers
Traceback (most recent call last):
  File "/usr/lib/debug/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.18-gdb.py", line 59, in <module>
    from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named libstdcxx.v6.printers

その後、GDBは実行を続けます(つまり、完全にクラッシュしません)。

私はこれについていくつかのバグ報告があることを知っています( herehere および here )。 2番目のレポートでは、修正がリリースされたという主張もあります。 3番目の方法では、シンボリックリンクの回避策がありますが、それは私には機能しませんでした(そして、たとえ機能していても気に入らない)。

誰かがこれの回避策を見つけましたか?不足しているパッケージはありますか?

注:Ubuntu Toolchainテストビルド(ppa:ubuntu-toolchain-r/test)PPAをアクティブにしました。

14
errikos

これは/usr/lib/debug/usr/lib/$triple/libstdc++.so.6.0.18-gdb.pyのバグです。正常に動作していれば、ImportErrorが1回だけ表示され、プリティプリンターが機能します。

ここで何が間違っているのかについての情報は http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=701935#18 をご覧ください。これはDebianのgcc-4.7では問題なく機能しましたが、最近までDebianのgcc-4.8では機能しませんでした。 gcc-4.6でこれを試したしたかどうかはわかりません。

とにかく、あなたはcanそのファイルにパッチを当てて正しい場所を探します。

7
SamB