डीबग करते समय डेटाटेबल को कैसे देखें


81

मैं अभी ADO.NET और DataSets और DataTables का उपयोग करना शुरू कर रहा हूं। एक समस्या यह है कि डिबग करने की कोशिश करने के दौरान डेटा तालिका में कौन से मूल्य हैं, यह बताना काफी कठिन है।

डेटाटेबल में कौन से मूल्यों को सहेजा गया है, इसे देखने के सबसे आसान तरीके क्या हैं? डिबगिंग करते समय विज़ुअल स्टूडियो में सामग्री देखने के लिए कोई व्यक्ति है या डेटा को फ़ाइल में लिखने का एकमात्र विकल्प है?

मैंने एक छोटी उपयोगिता फ़ंक्शन बनाया है जो एक डेटाटेबल को एक सीएसवी फ़ाइल में लिख देगा। फिर भी परिणामस्वरूप बनाई गई CSV फ़ाइल काट दी गई। सिस्टम लिखने के बीच में अंतिम पंक्ति क्या होनी चाहिए, इसके बारे में 3 लाइनें। फाइल को बस रोक देता है। मैं नहीं बता सकता कि क्या यह मेरी CSV रूपांतरण पद्धति, या डेटाटेबल की मूल जनसंख्या के साथ कोई समस्या है।

अपडेट करें

पिछले भाग को भूल जाओ मैं सिर्फ अपने स्ट्रीम लेखक को फ्लश करना भूल गया।

जवाबों:


198

एक ब्रेक पॉइंट सेट के साथ, डेटाटेबल या डेटासेट पॉप्युलेट होने के बाद, यदि आप वैरिएबल पर हॉवर करते हैं, तो आप एक आवर्धक ग्लास देख सकते हैं। यदि आप इस पर क्लिक करते हैं, तो यह डेटाटेबल विज़ुअलाइज़र को लाएगा, जिसे आप यहाँ पढ़ सकते हैं ।

इस चित्र में, आप नीचे देख रहे हैं, dt मेरा डेटाटेबल वैरिएबल है और ब्रेकपॉइंट मुझे इस मूल्य पर मंडराने की अनुमति देने के लिए नीचे कुछ पंक्तियाँ मार रहा था। विजुअल स्टूडियो 2008 का उपयोग करना।

वैकल्पिक शब्द

डेटाटेबल विज़ुअलाइज़र ( छवि क्रेडिट ):
वैकल्पिक शब्द


5
मुझे नहीं पता कि मैं इसे देखे बिना इतना लंबा कैसे चला गया! आपको लगता है कि वे उस नन्हे-नन्हें आवर्धक ग्लास आइकन को थोड़ा और स्पष्ट करेंगे!
जेसन

2
मैं सहमत हूँ। दुनिया में मैंने इसे कैसे मिस किया? मैं वी.एस. का उपयोग कर रहा हूं क्योंकि यह पहली बार सामने आया था। यह सुविधा कब जोड़ी गई थी?
ज़थ।

अच्छा उत्तर! एकमात्र समस्या यह है कि विज़ुअलाइज़र पंक्ति संख्याओं को प्रदर्शित नहीं करता है। अगर मुझे किसी विशेष पंक्ति में मूल्यों की जांच करने की आवश्यकता है, तो मैं यह कैसे कर सकता हूं?
AllSolutions

2

डेटासेट (ब्रेक पॉइंट के लिए f9 शॉर्टकट कुंजी) पर ब्रेक पॉइंट सेट करें और अपने एप्लिकेशन को चलाएं (f5 शॉर्टकट है) जब ब्रेक पॉइंट पर माउस होवर आता है तो विजुअल स्टूडियो में होवर इमेज में दिखाए गए ग्लास पर डेटासेट पर क्लिक करें। ।

नोट: चेक संकलन डिबग = "सही" वेब कॉन्फिग में सत्य है। डेब्यू के लिए विजुअल स्टूडियो न जाएं।


1

मैंने अपने ऐप में दो लाइनों को सबसे बाहरी वर्ग के नाम से जोड़ा।

public MyClass()
    {
      // The following (2) lines are used for testing only.  Remove comments to debug.
      System.Diagnostics.Debugger.Launch();
      System.Diagnostics.Debugger.Break();
    }

यह एप्लिकेशन को रोकना चाहिए और इसे डीबग मोड में लाना चाहिए। फिर आप इसके माध्यम से कदम बढ़ा सकते हैं और अपनी वस्तुओं के मूल्यों को देख सकते हैं क्योंकि आप उन पर मंडराते हैं।


0
    /// <summary>
    /// Dumps the passed DataSet obj for debugging as list of html tables
    /// </summary>
    /// <param name="msg"> the msg attached </param>
    /// <param name="ds"> the DataSet object passed for Dumping </param>
    /// <returns> the nice looking dump of the DataSet obj in html format</returns>
    public static string DumpHtmlDs(string msg, ref System.Data.DataSet ds)
    {
        StringBuilder objStringBuilder = new StringBuilder();
        objStringBuilder.AppendLine("<html><body>");

        if (ds == null)
        {
            objStringBuilder.AppendLine("Null dataset passed ");
            objStringBuilder.AppendLine("</html></body>");
            WriteIf(objStringBuilder.ToString());
            return objStringBuilder.ToString();
        }

        objStringBuilder.AppendLine("<p>" + msg + " START </p>");
        if (ds != null)
        {
            if (ds.Tables == null)
            {
                objStringBuilder.AppendLine("ds.Tables == null ");
                return objStringBuilder.ToString();
            }


            foreach (System.Data.DataTable dt in ds.Tables)
            {

                if (dt == null)
                {
                    objStringBuilder.AppendLine("ds.Tables == null ");
                    continue;
                }
                objStringBuilder.AppendLine("<table>");

                //objStringBuilder.AppendLine("================= My TableName is  " +
                //dt.TableName + " ========================= START");
                int colNumberInRow = 0;
                objStringBuilder.Append("<tr><th>row number</th>");
                foreach (System.Data.DataColumn dc in dt.Columns)
                {
                    if (dc == null)
                    {
                        objStringBuilder.AppendLine("DataColumn is null ");
                        continue;
                    }


                    objStringBuilder.Append(" <th> |" + colNumberInRow.ToString() + " | ");
                    objStringBuilder.Append(  dc.ColumnName.ToString() + " </th> ");
                    colNumberInRow++;
                } //eof foreach (DataColumn dc in dt.Columns)
                objStringBuilder.Append("</tr>");

                int rowNum = 0;
                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    objStringBuilder.Append("<tr><td> row - | " + rowNum.ToString() + " | </td>");
                    int colNumber = 0;
                    foreach (System.Data.DataColumn dc in dt.Columns)
                    {
                        objStringBuilder.Append(" <td> |" + colNumber + "|" );
                        objStringBuilder.Append(dr[dc].ToString() + "  </td>");
                        colNumber++;
                    } //eof foreach (DataColumn dc in dt.Columns)
                    rowNum++;
                    objStringBuilder.AppendLine(" </tr>");
                }   //eof foreach (DataRow dr in dt.Rows)

                objStringBuilder.AppendLine("</table>");
                objStringBuilder.AppendLine("<p>" + msg + " END </p>");
            }   //eof foreach (DataTable dt in ds.Tables)

        } //eof if ds !=null 
        else
        {

            objStringBuilder.AppendLine("NULL DataSet object passed for debugging !!!");
        }
        return objStringBuilder.ToString();

    } 

यह क्या लिखा है ?? WriteIf (objStringBuilder.ToString ());
कीकेनेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.