1

Macでc ++ 11機能をサポートするg ++ 4.8を使用しています。

/opt/local/bin/g++-mp-4.8

gdb 6.3.50 も使用しています。

GNU gdb 6.3.50-20050815 (Apple version gdb-1822) (Sun Aug  5 03:00:42 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".

私のコードには、unique_ptr を持つ多数のマップまたはベクターがあり、マップまたはベクター内の要素に関する情報が表示されないため、それらをデバッグするのは非常に困難です。

ユーティリティ メソッドを作成して gdb で呼び出してみましたが、うまくいきません。エラーメッセージはスローしませんが、何も表示しません。

void testPrint( map<int, unique_ptr<GroupContextSummary>> & m, int i )
{
    cout <<  m[i].get()->to_string() << endl;
}

マップ/ベクター内の要素を表示する方法はありますか?

ここに画像の説明を入力

4

2 に答える 2

0

gdb 7 を使用せずに map と vector をデバッグできましたが、かなりのプリンター設定が必要でした。

こちらのサイト( http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF )に手順が載っています。要するに。

  1. ~/ に .gdbinit をコピーします。
  2. gdb を再起動します
  3. pvectorベクトルの印刷に使用します。

このページを参照してください: https://stackoverflow.com/a/17246292/260127 そしてこのページ: How to print out the content in vector<unique_ptr> with gdb on Mac OS X

于 2013-06-22T01:15:11.747 に答える