ホームページ  >  記事  >  バックエンド開発  >  GDB で std::vector の要素にアクセスして印刷するにはどうすればよいですか?

GDB で std::vector の要素にアクセスして印刷するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-28 01:43:02218ブラウズ

How Can I Access and Print Elements of a std::vector in GDB?

GDB のベクター要素へのアクセス

C コードをデバッグするときは、データ構造の内容を調べることが重要です。 std::vector の場合、これは GDB で特に困難になる可能性があります。

ベクトル要素のアドレス指定

GCC 4.1.2 では、std:: の内部配列ベクトルには、ポインタを介してアクセスできます:

myVector._M_impl._M_start

ここで、myVector はベクトルの名前です。

Printing Vector Elements

std::vector の全体を出力するにはmyVector という名前で、次の GDB コマンドを実行します。

print *(myVector._M_impl._M_start)@myVector.size()

このコマンドは、ベクター内のすべての要素を出力します。最初の N 個の要素のみを出力するには、次を使用します。

print *(myVector._M_impl._M_start)@N

説明

アスタリスク (*) は、先頭を指す _M_start ポインターを逆参照するために使用されます。内部配列の。 @ 記号は、出力する要素の数を指定します。

このメソッドはバージョンに依存しており、コンパイラのバージョンによって異なる場合があります。

以上がGDB で std::vector の要素にアクセスして印刷するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。