• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發(fā)教程 > 詳細頁面

        Dot Net的調試 - 3

        Dot Net的調試 - 3

        更新時間:2022-05-07 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

        調試



        實際上調試和跟蹤用得很普遍。Debug類中的方法有相同的名字的方法,這些方法實現(xiàn)了調試的功能。不同之處是在發(fā)布版本配置中是禁止使用的(這意味著不能產生二進制代碼調用這些代碼)。調試輸出也可以在配置文件設置,請看下面:

        <confuration>

        <system.diagnostics>

        <debug autoflush = “true” indentsize = “7” / >

        </system.diagnostics>

        </confuration>

        備注:調試的聲明和語法和跟蹤很類似。不同之處,就是把有Trace的地方替換為Debug



        設置調試開關

        最后討論的主題是Switch。Switch是有一些狀態(tài)的對象。可以在配置文件或者編程的時候改變狀態(tài)。Switch讓你創(chuàng)建可配置的調試跟蹤代碼。最好了解Switch的方法是寫一個段簡單代碼,如下:

        using System;

        using System.Diagnostics;



        namespace Switching

        {

        class SampleClass

        {

        //Create a Switch. It is initialized by an externally specified value

        static TraceSwitch generalSwitch = new TraceSwitch(“CoolSwitch”, “Global Scope”);

        static public void SampleMethod()

        {

        //The first message is written if the switch state is set to TraceError

        if(generalSwitch.TraceError)

        console.WriteLine(“TraceError message”);

        //The second message is written if the switch state is set to TraceVerbose

        if (generalSwitch.TraceVerbose)

        Console.WriteLine(“TraceVerbose message”);

        //The third message is writeen if the switch state is set to TraceWarning

        if (generalSwitch.TraceWarning)

        Console.WriteLine(“TreaceWarning message”);

        //The fourth message is written if the switch state is set to TraceInfo

        if(generalSwitch.TraceInfo)

        Console.WriteLine(“TraceInfo Message”);

        }

        public static void Main(string[] args)

        {

        //calls the sampleMethod method

        SampleMethod();

        }

        }

        }



        有幾個switch類:TraceSwitch和BooleanSwitch。這個例子中我們用使用TraceSwitch依照他們的狀態(tài)創(chuàng)建輸出信息。Switch狀態(tài)由TraceErrror,TraceInfo,TraceVerbose和TraceWarning屬性檢查。這些屬性檢查switch狀態(tài)和如果trace級別等于或大于相應的常量,那么將返回true。例如,當這個級別是2或者更大那么TraceWarning是true,下面表格是返回值:

        TraceErroe
        1

        TraceWarning
        2

        TraceInfo
        3

        TraceVerbose
        4


        但是,正如我們已經說的,switch的狀態(tài)可以在代碼中修改,做個修改代碼的范例:

        using System;

        using System.Diagnostics;



        namespace Switching

        {

        class SampleClass

        {

        //Create a Switch. It is initialized by an externally specified value

        static TraceSwitch generalSwitch = new TraceSwitch(“CoolSwitch”, “Global Scope”);

        static public void SampleMethod()

        {

        //The first message is written if the switch state is set to TraceError

        if(generalSwitch.TraceError)

        console.WriteLine(“TraceError message”);

        //The second message is written if the switch state is set to TraceVerbose

        if (generalSwitch.TraceVerbose)

        Console.WriteLine(“TraceVerbose message”);

        //The third message is writeen if the switch state is set to TraceWarning

        if (generalSwitch.TraceWarning)

        Console.WriteLine(“TreaceWarning message”);

        //The fourth message is written if the switch state is set to TraceInfo

        if(generalSwitch.TraceInfo)

        Console.WriteLine(“TraceInfo Message”);

        }

        public static void Main(string[] args)

        {

        Console.WriteLine(“Before manual level set\n”);

        SampleMethod();

        GeneralSwitch.Level = TraceLevel.Warning;

        SampleMethod();

        }

        }

        運行程序,包含以下信息:



        Before manual level set



        TraceError Message

        TraceWarning message

        TraceInfo message



        After manual level set



        TraceError Message

        TraceWarning Message



        這些展示了改變trace switch層次。



        計算性能

        這部分我們將告訴你調試的花費時間。事實上,調試對于商業(yè)邏輯不起作用。但是調試代碼需要花費時間。我們將計算應用程序中輸出信息的花費時間。當你測試一個是建要求嚴格的應用程序時間,測量就很重要。看下面的代碼:

        using system;

        using system.Diagnostics;



        namespace DebugDemo

        {

        class PrimeNumberDetector

        {

        public static bool IsPrime(int n)

        {

        int upperbound = (int)Math.Sqrt(n);

        for (int I = 2; I <= upperbound; I++)

        {

        Debug.WriteLine(“Processing number” + n + “, Testing with “ + i);

        If((n%i) == 0)

        {

        Debug.WriteLine(“FAILED”);

        Return false;

        }

        }

        }



        public Application

        {

        [STAThread]

        static void Main(string[] args)

        {

        for(int i = 2; i < 10000;i++)

        if (PrimeNumberDetector.IsPrime(i))

        Console.WriteLine(“{0} is prime number” , i);

        }

        }

        }

        程序測試2到1000個整數(shù)和輸出素數(shù)。調試的目的是測試每一個輸出數(shù)字,不管是否是素數(shù)。如果數(shù)字不是素數(shù),那么輸出failed.

        對比測量下帶調試和不帶調試的時間:


        1
        2
        3

        帶調試功能(hh:mm:ss.ff)
        00:00:07.9714624
        00:00:07.9414192
        00:00:07.9714624

        不帶調試功能

        (hh:mm:ss.ff)
        00:00:05.1273728
        00:00:05.5179344
        00:00:05.1273728


        可以看出調試是昂貴的—例子中花費了64%的執(zhí)行時間



        結論:

        文章中描述了調試跟蹤.net程序的一般方法。當然還有一些其他問題,如,條件編譯我們沒有做。想學到更多的東西,可以看msdn。我們希望這篇文章幫助你掌握調試跟蹤.net程序的技術。


        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 国产亚洲欧洲Aⅴ综合一区 | 97人伦色伦成人免费视频| 国产日韩亚洲大尺度高清| 视频免费1区二区三区| 亚洲成A人片在线观看无码3D | 亚洲国产综合AV在线观看| 女人18毛片水真多免费看 | 在线a亚洲v天堂网2019无码| 一级毛片正片免费视频手机看| 国产乱色精品成人免费视频| 精品久久久久久亚洲综合网| 亚洲av高清在线观看一区二区 | 国产精品亚洲αv天堂无码| 国产精品成人69XXX免费视频| 亚洲午夜久久久久妓女影院 | 亚洲精品国产电影| 两个人www免费高清视频| 亚洲av永久无码精品古装片| 免费无码又爽又刺激高潮视频| 青青草原精品国产亚洲av| 91精品免费国产高清在线| 亚洲一区AV无码少妇电影| 免费在线视频一区| 最近国语视频在线观看免费播放| 久久青青草原亚洲AV无码麻豆 | 精品久久洲久久久久护士免费| 国产产在线精品亚洲AAVV| 国产AV无码专区亚洲Av| 国产成人精品免费视| 精品韩国亚洲av无码不卡区| 中文字幕精品无码亚洲字| 91av免费观看| 精品久久久久久亚洲中文字幕| 亚洲精品国偷自产在线| 国产成人yy免费视频| 无忧传媒视频免费观看入口| 亚洲AV无码一区东京热久久 | 在线观看免费a∨网站| 五级黄18以上免费看| 亚洲在成人网在线看| 少妇亚洲免费精品|