我正在构建一个复杂的数学软件,我必须在调试一些创建的 500x700 矩阵时查看。矩阵也不是按顺序填充的,这意味着它们是“随机”填充的,我需要看到这一点。我已经阅读了内存屏幕,我可以看到内存位置及其值,但是对于如此巨大的矩阵,内存窗口对我来说没有用。
所以我的问题是,除了内存窗口之外,还有其他方法可以在 Visual Studio 08 中调试和观察矩阵吗?
我正在构建一个复杂的数学软件,我必须在调试一些创建的 500x700 矩阵时查看。矩阵也不是按顺序填充的,这意味着它们是“随机”填充的,我需要看到这一点。我已经阅读了内存屏幕,我可以看到内存位置及其值,但是对于如此巨大的矩阵,内存窗口对我来说没有用。
所以我的问题是,除了内存窗口之外,还有其他方法可以在 Visual Studio 08 中调试和观察矩阵吗?
我用来可视化复杂数据结构的Dump()
方法是在您的类中创建一个方法,该方法将数据格式化为字符串并返回一个std::string
. 如果要检查变量,请在调试器中选择它并调用 QuickWatchCtrl-Alt-Q
并键入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 将评估函数调用(在有限的程度上),因此您可以使用它来调用这些辅助方法。