2

私は複雑な数学ソフトウェアを構築しており、作成された 500x700 の行列をデバッグしながら確認する必要があります。また、マトリックスは順番に埋められていません。つまり、「ランダムに」埋められているので、それを確認する必要があります。メモリ画面でメモリの場所とその値を確認できることを読みましたが、そのような巨大なマトリックスではメモリ ウィンドウは役に立ちません。

だから私の質問は、メモリ ウィンドウ以外の Visual Studio 08 で adn ウォッチ マトリックスをデバッグする他の方法はありますか?

4

1 に答える 1

2

複雑なデータ構造を視覚化するために私が使用するDump()方法は、データを文字列にフォーマットしてstd::string. 変数を調べたい場合は、デバッガーで変数を選択し、Ctrl-Alt-Qと入力して QuickWatch を呼び出しますmyVariable.Dump()。これにより、文字列が 1 行に凝縮されて表示されます。虫めがねアイコンをクリックすると、サイズ変更可能なテキスト ビジュアライザー ウィンドウが開きます。

フォーマットをさらに制御する必要がある場合は、Dump()メソッドが必要な詳細レベルの int を取るようにします。

編集:

わかりました、ここに例を示しstringstreamます。文字列を組み立てるために使用します: [免責事項: 私はこれをコンパイルしようとはしていません]

class Matrix {
public:
  int m_Data[ROWS][COLS];

  ...
  std::string Dump() const {
    std::ostringstream oss;
    for (int r=0;r<ROWS; r++) {
      for (int c=0;c<COLS; c++) {      
        oss << m_Data[r][c] << " ";
      }
      oss << "\n";
    }
    return oss.str();
  }

  void DumpToFile() {
    std::ofstream os("output.txt");
    os << Dump();
  }
};

Dump() メソッドは、QuickWatch ウィンドウに表示できる文字列に出力します。テキスト プレビューが小さすぎる場合は、代わりに DumpToFile() を呼び出して、別のテキスト エディターで表示できるファイルにマトリックスを書き込むことができます。重要なことは、QuickWatch が関数呼び出しを (ある程度まで) 評価するので、それを使用してこれらのヘルパー メソッドを呼び出すことができるということです。

于 2012-09-18T14:54:50.613 に答える