6

STL デバッグをサポートする Linux IDE を探しています。

問題は、push_back の後にベクトルを調べると、Eclipse CDT で次のようになることです。

int main() {
 vector<string> v;
 v.push_back("blah");
 return 0;
}

私は何か敵対的なものを手に入れます

{<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x1fee040, _M_finish = 0x1fee048, _M_end_of_storage = 0x1fee048}}, <No data fields>}

のようなものの代わりに

vector["blah"]

または似たようなもの。より優れた STL サポートを提供する Linux 用の代替 IDE/デバッガーはありますか?

4

5 に答える 5

5

QtCreatorには、Qt コンテナー、一部の STL コンテナー、および多数の Qt クラス用のデバッガー ダンパーがあります。また、Eclipse よりもレスポンシブです。

Qt Creator デバッガー ダンパーを参照してください。

于 2009-09-03T08:51:11.087 に答える
1

stlコンテナを印刷できるようにGDBをスクリプト化するだけです。ベクトルを印刷するには:

define pvec
    set $vec = ($arg0)
    set $vec_size = $vec->_M_impl->_M_finish - $vec->_M_impl->_M_start
    if ($vec_size != 0)
        set $i = 0
        while ($i < $vec_size)

          printf "Vector Element %d:  ", $i

          p *($vec->_M_impl->_M_start+$i)

          set $i++

        end
    end
end

これで、Pythonでスクリプトを作成することもできます。ドキュメントを確認してください。

私は個人的に非常に便利なcursesデバッガーであるcgdbを使用しています。

于 2011-07-06T12:05:16.473 に答える
0

Eclipseはgdbを使用し、gdbをスクリプト化して、さまざまなタイプを希望どおりに出力できるようにします。私は自分のタイプに自分のスクリプトを使用していますが、stlには多くの利用可能なスクリプトがあります。

さて、これをスムーズに機能させるためのトリッキーな部分はEclipseですが、それは解決策になる可能性があります。

于 2009-09-03T09:09:35.270 に答える
0

これは IDE 自体とは関係ありませんが、使用しているデバッガーの欠点です。IDE は、特に Linux では、デバッガーのフロントエンドにすぎません。あなたは GDB を使っていると思いますが、これ以上良くなることはありません。ところで、Linux で開発している間、私はデバッガーの代わりに慎重に配置された print ステートメントを使用します。ほとんどの場合、デバッガーを使用するよりも優れています。

于 2009-09-03T09:06:40.783 に答える