Trace vs Debug in .NET BCL

后端 未结 7 1266
余生分开走
余生分开走 2020-12-02 11:58

It seems that the

  • System.Diagnostics.Debug, and
  • System.Diagnostics.Trace

are largely the same, with the notable exception that

相关标签:
7条回答
  • 2020-12-02 12:32

    You've answered your own question. If Debug messages stayed in, people could see them. For example, let's say you do:

    Debug.WriteLine("Connecting to DB with username: blah and PW: pass");
    

    Anyone who decompiles your code can see that. But that may be something vitally important for you to know during testing.

    Trace is different. If you are going to do Trace, I'd likely just use log4net.

    0 讨论(0)
  • 2020-12-02 12:35

    The main difference is the one you indicate: Debug is not included in release, while Trace is.

    The intended difference, as I understand it, is that development teams might use Debug to emit rich, descriptive messages that might prove too detailed (or revealing) for the consumer(s) of a product, while Trace is intended to emit the kinds of messages that are more specifically geared toward instrumenting an application.

    To answer your last question, I can't think of a reason to use Debug to instrument a piece of code I intended to release.

    Hope this helps.

    0 讨论(0)
  • 2020-12-02 12:37

    I'd look at using log4net for tracing as its capabilities are much more flexible and robust.

    But for true debug messages that I never intend for anyone other than me or an internal tester to see, I'd probably stick with Debug.

    0 讨论(0)
  • 2020-12-02 12:39

    The only difference between trace and debug is that trace statements are included by default in the program when it is compiled into a release build, whereas debug statement are not.

    Thus, the debug class is principally used for debugging in the development phase, while trace can be used for testing and optimization after the application is compiled and released.

    0 讨论(0)
  • 2020-12-02 12:42

    For highly performance sensitive code blocks, leaving Trace compiled-in but disabled might make a performance difference.

    0 讨论(0)
  • 2020-12-02 12:43

    This is full difference between Trace and Debug: Both Debug and Trace use System.Diagnostics namespace.

    Debug

    • It uses Debug class.
    • It uses in debug build.
    • It uses the time of application development.
    • In Debug mode compiler inserts some debugging code inside the executable.
    • Debug class works only in debug mode.
    • Performance analysis cannot be done using Debug.
    • Debugging uses to find error in program.
    • For Debug we can use Debug.Write() method.
    • Debug runs in same thread as main program execute.

    Trace

    • It uses Trace class.
    • Trace statement includes by default when program compiled into released build.
    • Trace class is used for testing and optimization even after an application is compiled and released.
    • Trace class works in both case Debug mode as well as release mode.
    • Trace runs in different thread form main program execute thread.
    • For Trace we can use Trace.Write() method.
    • It uses time of application deployment.

    reference : csharp corner

    0 讨论(0)
提交回复
热议问题