2016-09-28 6 views
1

C++ STL Containerの内容を表示しようとしています。私はマップを表示しようとしたとき、デフォルトでgccとgdbのサポートはかなり印刷の最近のバージョンは、私は次のようだというhereをお読みください。gdb印刷がうまくいかない

enter image description here

をその後、私はかなりthisに応じて印刷を設定してみました同じ出力を示しています。誰かが私を助けてくれますか?ありがとう。

私はUbuntu 16.04、g ++ 5.4.1、GDB 7.11.1およびpython 2.7.12(公式ソースからインストールされています)を使用しています。

+0

あなたが行いました[この](http://sourceware.org/gdb/wiki/STLSupport)ガイド:あなたのネイティブGDBのバイナリがインストールされていない場合

、あなたはこれを使用することができますか?あなたはLinuxを使用していて、eclipseを使用していないという前提が正しいので、Windowsの設定とEclipseの互換性は、可能な限り除外できますか? – starturtle

+0

私はUbuntu 16.04を使用しています。はい、私はこのガイドに従っています。上記のような出力が得られます:( – piyukr

+0

あなたの質問からあなたのディストリビューションに付属している* GDBを使用しているのか、あなた自身のものをビルドしているのかは明らかではありません。 –

答えて

2

GDB work with Python 3 onlyのいくつかのバージョンがあると言いました。

あなたの説明が間違いない限り、それは可能な理由として排除することができます。 sourceware.org

以上は、あなたがPythonプログラミング言語を使用してGDBを拡張することができます

ことが示唆されました。この機能は、gdbがconfigure dで、--with-pythonを使用している場合にのみ使用できます。

ご使用のガイドに直接言及していないため、行ったことがあるかどうかわかりません。

+0

こんにちは、私は 'gdb a.out --with-python'を実行しようとしました。 'gdb:unrecognized option '--with-python'' – piyukr

+1

@piyukr '--with-python'をGDB' configure'に渡しました。スクリプト。 GDBを構築したら、それは遅すぎます。 –

+0

@EmployedRussianありがとうございました。 – starturtle

2

Ubuntu 16.04のgdbネイティブは、std::mapをきれいに印刷できます。あなたの目標は、あなたがソースからビルドバイナリでこれを達成するためであれば、それはまだ、これがネイティブでの作業を取得するために役に立つかもしれない

/usr/share/gcc-5/python/libstdcxx/v6/printers.py 

:それを扱うPythonのコードはlibstdc++6パッケージから次のファイルにclass StdMapPrinterあります比較のための基礎としてUbuntuパッケージを最初に使用します。あなたが作成したgdbでプリンタが動作しない可能性が高い理由は、libstdcxx/v6/printers.pylibstdcxx.v6.printers、python名前空間内)は、gdbがそれを見つけようとしているところにありません。

また、gdbのUbuntu 16.04ネイティブは、python2ではなくpython3にリンクされています。それを見るための一つの方法は、Ubuntuの16.04からlibstdcxx.v6.printersネイティブがpython2かのpython3のいずれかで動作するように意図されたことが表示されます

ldd /usr/bin/gdb 

の出力です。

apt install gdb 
関連する問題