c++ - Visual Studio 2008 调试可视化矩阵

标签 c++ debugging visual-studio-2008 matrix

我正在构建一个复杂的数学软件,我必须在调试一些创建的 500x700 矩阵时进行查看。此外,矩阵不是按顺序填充的,这意味着它们是“随机”填充的,我需要看到这一点。我读过,通过内存屏幕,我可以看到内存位置及其值,但是对于如此巨大的矩阵,内存窗口对我来说没有用。

所以我的问题是,除了内存窗口之外,还有其他方法可以在 Visual Studio 08 中调试 adn watch 矩阵吗?

最佳答案

我用来可视化复杂数据结构的方法是在类中创建一个 Dump() 方法,该方法将数据格式化为字符串并返回 std::string。如果您想检查该变量,请在调试器中选择它,并使用 Ctrl-Alt-Q 调用 QuickWatch 并输入 myVariable.Dump()。然后,这将向您显示压缩为一行的字符串。如果您随后单击放大镜图标,它将打开一个可以调整大小的文本可视化窗口。

如果您需要对格式进行更多控制,请使 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 将评估函数调用(在有限的程度上),以便您可以使用它来调用这些辅助方法。

关于c++ - Visual Studio 2008 调试可视化矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12479264/

相关文章:

c++ - C++中重载*运算符编译错误

c++ - 为 Windows 10 通用应用构建 OpenCV

php - 在 symfony 中以交互方式启用 Debug模式

c# - 用于单元测试的 Global.asax?

visual-studio-2008 - 大括号突出显示 Visual Studio 2008

使用初始化列表时的c++数据成员初始化顺序

c++ - 如何使用 CGI 下载文件

c++ - 调试时如何查看全局变量

c# - Debug.Write 不工作

visual-studio-2008 - 如何在 MSVC 2008 中从汇编语言调用 C 库函数?