我正在構建一個複雜的數學軟件,我必須在調試創建的一些500x700矩陣時看到。矩陣也沒有按順序填充,這意味着「隨機」它們被填充,我需要看到它。我已經閱讀了內存屏幕,我可以看到內存位置和它們的值,但是對於這種巨大的矩陣,內存窗口對我來說並不有用。Visual Studio 2008調試可視化矩陣
所以我的問題是,是否有任何其他方式在Visual Studio 08比內存窗口調試ADN手錶矩陣?
我正在構建一個複雜的數學軟件,我必須在調試創建的一些500x700矩陣時看到。矩陣也沒有按順序填充,這意味着「隨機」它們被填充,我需要看到它。我已經閱讀了內存屏幕,我可以看到內存位置和它們的值,但是對於這種巨大的矩陣,內存窗口對我來說並不有用。Visual Studio 2008調試可視化矩陣
所以我的問題是,是否有任何其他方式在Visual Studio 08比內存窗口調試ADN手錶矩陣?
我用來可視化複雜數據結構的方法是在您的類中創建一個Dump()
方法,該方法將數據格式化爲字符串並返回std::string
。如果要檢查變量,則在調試器中選擇它,並使用Ctrl-Alt-Q
和類型myVariable.Dump()
調用QuickWatch。這會顯示字符串凝聚成一行。如果你點擊放大鏡圖標,它會打開一個文本可視化窗口,可以調整大小。
如果您需要更多的控制權,格式,那麼使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();
}
};
轉儲()方法將輸出到您可以在QuickWatch窗口中顯示的字符串。如果文本預覽太小,則可以調用DumpToFile(),而不是將矩陣寫入可以在單獨的文本編輯器中查看的文件。關鍵是QuickWatch會評估函數調用(在一定程度上),以便您可以使用它來調用這些幫助器方法。
對不起,我對C++程序設計非常新,通常在Visual Studio中更多。我想我或多或少知道你在暗示我,但我不知道如何做到這一點。要問一些小例子會不會太多?非常感謝你! –
感謝您的幫助!使用這個methot知道在調試時沒有簡單的方法來讀取矩陣,這是非常有趣的。 –
過去我用於矩陣的另一種技術是使用'DumpToFile()'方法,然後在Matlab/Octave/SciPy中編寫導入腳本以讀取空格分隔的文件並以圖形方式顯示。這對您的情況可能非常有用,因爲您可以查看哪些元素已填充。 –