1.System.Diagnostics 名前空間
System.Diagnostics 名前空間にはデバッグ時に便利な属性がいくつか存在します。 ここではそのうちのいくつかを紹介します。 また、それに先だって#Ifディレクティブとその用法を見ていきます。
|
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 |
Option Strict On ' 時刻も出力する #Const LogOutputTime = False Imports System.Threading Module AttributesForDebugging ' イベントを記録する Sub LogEvent(ByVal ev As String) #If Debug Then #If LogOutputTime Then Console.WriteLine(ev + " Time: " + DateTime.Now.ToString()) #Else Console.WriteLine(ev) #End If #End If End Sub Sub Main() ' イベントを記録 LogEvent("Start application") ' 開始メッセージを出力 Console.WriteLine("Begin calculation.") ' いくつものややこしい処理があるとする Thread.Sleep(3000) ' 終了メッセージを出力 Console.WriteLine("Calculation was finished.") ' イベントを記録 LogEvent("End application") End Sub End Module |
| デバッグビルド LogOutputTime = True | |
Start application Time: 2003/03/30 11:42:44 Begin calculation. Calculation was finished. End application Time: 2003/03/30 11:42:47 Press any key to continue | |
| デバッグビルド LogOutputTime = False | |
Start application Begin calculation. Calculation was finished. End application Press any key to continue | |
| リリースビルド | |
Begin calculation. Calculation was finished. Press any key to continue |
|
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 |
Option Strict On ' 時刻も出力する #Const LogOutputTime = False Imports System.Diagnostics Imports System.Threading Module AttributesForDebugging ' イベントを記録する <Conditional("Debug")> _ Sub LogEvent(ByVal ev As String) #If LogOutputTime Then Console.WriteLine(ev + " Time: " + DateTime.Now.ToString()) #Else Console.WriteLine(ev) #End If End Sub Sub Main() ' イベントを記録 LogEvent("Start application") ' 開始メッセージを出力 Console.WriteLine("Begin calculation.") ' いくつものややこしい処理があるとする Thread.Sleep(3000) ' 終了メッセージを出力 Console.WriteLine("Calculation was finished.") ' イベントを記録 LogEvent("End application") End Sub End Module |
| デバッグビルド | |
Start application Begin calculation. Calculation was finished. End application Press any key to continue | |
| リリースビルド | |
Begin calculation. Calculation was finished. Press any key to continue | |
|
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 |
Option Strict On Imports System.Diagnostics Imports System.Threading Module AttributesForDebugging ' イベントを記録する <Conditional("Debug")> _ Sub LogEvent(ByVal ev As String, ByRef dtm As DateTime) dtm = DateTime.Now Console.WriteLine(ev + " Time: " + dtm.ToString()) End Sub Sub Main() ' この時刻は何らかの理由で利用されるものとする Dim dtm As DateTime ' イベントを記録 LogEvent("Start application", dtm) ' いくつものややこしい処理があるとする Thread.Sleep(3000) ' イベントを記録 LogEvent("End application", dtm) End Sub End Module |
| デバッグビルド | |
Start application Time: 2003/03/22:15:14 End application Time: 2003/03/22:15:17 Press any key to continue | |
| リリースビルド | |
Press any key to continue | |
|
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 |
Option Strict On #Const OutputLog = True Imports System.Diagnostics Imports System.Threading Module AttributesForDebugging ' イベントを記録する <Conditional("Debug"), Conditional("OutputLog")> _ Sub LogEvent(ByVal ev As String, ByRef dtm As DateTime) dtm = DateTime.Now Console.WriteLine(ev + " Time: " + dtm.ToString()) End Sub Sub Main() ' この時刻は何らかの理由で利用されるものとする Dim dtm As DateTime ' イベントを記録 LogEvent("Start application", dtm) ' いくつものややこしい処理があるとする Thread.Sleep(3000) ' イベントを記録 LogEvent("End application", dtm) End Sub End Module |
|
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 |
Option Strict On Imports System.Diagnostics Module AttributesForDebugging <Obsolete("このバージョンは使用しないで下さい。 NewMethodを使用して下さい。", True)> _ Sub OlderMethod(ByVal msg As String) Debug.WriteLine("より古いバージョン: " + msg) End Sub <Obsolete("将来サポートされなくなる可能性があります。 NewMethodを使用して下さい。")> _ Sub OldMethod(ByVal msg As String) Console.WriteLine("古いバージョン: " + msg) End Sub Sub NewMethod(ByVal msg As String) Console.WriteLine("新しいバージョン: " + msg) End Sub Sub Main() OlderMethod("メソッドを呼び出します") OldMethod("メソッドを呼び出します") NewMethod("メソッドを呼び出します") End Sub End Module |

|
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 |
Option Strict On Imports System.Diagnostics Module AttributesForDebugging <Obsolete("このバージョンは使用しないで下さい。 NewMethodを使用して下さい。", True)> _ Sub OlderMethod(ByVal msg As String) Debug.WriteLine("より古いバージョン: " + msg) End Sub <Obsolete("将来サポートされなくなる可能性があります。 NewMethodを使用して下さい。")> _ Sub OldMethod(ByVal msg As String) Console.WriteLine("古いバージョン: " + msg) End Sub Sub NewMethod(ByVal msg As String) Console.WriteLine("新しいバージョン: " + msg) End Sub Sub Main() OlderMethod("メソッドを呼び出します") OldMethod("メソッドを呼び出します") NewMethod("メソッドを呼び出します") End Sub End Module |

|
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 |
Option Strict On Imports System.Diagnostics Module AttributesForDebugging <Obsolete("System.Drawing.Colorを使用して下さい。")> _ Structure ARGB Dim R As Byte Dim G As Byte Dim B As Byte Dim A As Byte End Structure Sub Main() Dim col1 As ARGB Dim col2 As System.Drawing.Color End Sub End Module |

|
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 |
Option Strict On Imports System.Diagnostics Module AttributesForDebugging <DebuggerStepThrough()> _ Sub DebuggedMethod() ' デバッグ済みのコードがあるとする Console.WriteLine("処理が完了しました。") End Sub Sub Main() DebuggedMethod() End Sub End Module |
|
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 |
Option Strict On Imports System.Diagnostics Module AttributesForDebugging <DebuggerHidden()> _ Sub DebuggedMethod() ' デバッグ済みのコードがあるとする Console.WriteLine("処理が完了しました。") End Sub Sub Main() DebuggedMethod() End Sub End Module |