System.Diagnostics 入门






3.23/5 (13投票s)
2003年10月31日
4分钟阅读

187782
本文帮助您开始了解 System.Diagnostics 命名空间。
引言
以下是 Diagnostics
命名空间中的重要类。
System.Diagnostics.EventLog
此组件提供了写入事件日志、读取事件日志条目以及在网络上创建和删除事件日志和事件源的功能。
一些相关类
EventLog
:提供与 Windows 事件日志的交互EventLogEntry
:封装事件日志中的单个记录。此类不可继承。EventLogEntryCollection
:定义EventLogEntry
实例集合的大小和枚举器EventLogInstaller
:允许您安装和配置您的应用程序在运行时读取或写入的事件日志。安装实用程序(例如,InstallUtil.exe)在安装事件日志时会调用此类。EventLogPermission
:允许控制事件日志的代码访问权限。EventLogPermissionAttribute
:允许对事件日志进行声明性权限检查EventLogPermissionEntry
:定义为EventLog
设置的代码访问安全权限的最小单位EventLogPermissionEntryCollection
:包含EventLogPermissionEntry
对象的一个强类型集合EventLogTraceListener
:提供一个简单的侦听器,将跟踪或调试输出定向到EventLog
示例
如何写入事件日志
如下创建 EventLog
类的对象
Dim ev As New EventLog("Application", _
System.Environment.MachineName, "MyAppName")
调用上述类的 WriteEntry
方法。
ev.WriteEntry(“My event text”, _
System.Diagnostics.EventLogEntryType.Information, myeventid)
关闭写入器。
Ev.close
如何从事件日志读取
如下创建 EventLog
类和 EventLogEntry
类的对象
Dim ev as New EventLog("Application", _
System.Environment.MachineName, "MyAppName")
Dim entry as EventLogEntry
循环遍历条目。
For each entry in ev.Entries
'Loop thru it. entry.EventId, entry.Message, entry.EntryType
Next
如何创建新的 EventLog 节点
如下创建 EventLog
类的对象
Dim ev As New EventLog(NodeNametobecreated, _
System.Environment.MachineName, "Sourceoflog")
ev.WriteEntry("test message")
ev.Close()
System.Diagnostics.Process
Process
类提供跨网络监视系统进程以及启动和停止本地系统进程的功能。
除了检索正在运行的进程列表(通过指定计算机、进程名称或进程 ID)或查看当前访问处理器的进程信息外,您还可以通过 Process
类本身以及通过与 ProcessThread
和 ProcessModule
类进行交互来深入了解进程线程和模块。
ProcessStartInfo
类使您能够指定启动新进程的各种元素,例如输入、输出和错误流、工作目录以及命令行动词和参数。这些为您提供了对进程行为的精细控制。
其他相关类使您可以指定窗口样式、进程和线程优先级,以及与线程和模块的集合进行交互。
一些相关类
Process
:提供对本地和远程进程的访问,并允许您启动和停止本地系统进程。ProcessModule
:表示加载到特定进程中的一个 .dll 或 .exe 文件。ProcessModuleCollection
:提供ProcessModule
对象的一个强类型集合。ProcessStartInfo
:指定启动进程时使用的一组值。ProcessThread
:表示一个操作系统进程线程。ProcessThreadCollection
:提供ProcessThread
对象的一个强类型集合。
示例
如何列出所有正在运行的进程
Dim oPro as Process
For each oPro in Process.GetProcesses()
MsgBox(ProcessInfo.ProcessName)
Next
如何启动进程
Dim oPro as Process
pPro = Process.Start("notepad.exe")
pPro.WaitForExit()
如何使用命令行参数启动进程
Dim startInfo As New ProcessStartInfo("explorer.exe")
startInfo.Arguments = "/n"
Process.Start(startInfo)
如何获取有关当前进程的信息
Dim curProc As Process = Process.GetCurrentProcess()
Msgbox(curProc.WorkingSet.ToString() + _
vbCrLf + curProc.StartTime.ToLongTimeString() _
+ curProc.TotalProcessorTime.ToString())
如何获取进程加载的模块列表
Dim ProcessInfo As Process = Process.GetProcessById(ProcessID)
Dim modl As ProcessModuleCollection = ProcessInfo.Modules
Dim strMod As New System.Text.StringBuilder()
Dim proMod As ProcessModule
For Each proMod In modl
strMod.Append("Module Name: " + proMod.ModuleName + vbCrLf)
Next proMod
System.Diagnostics.PerformanceCounter
PerformanceCounter
类使您能够监视系统性能,而 PerformanceCounterCategory
类提供了创建新自定义计数器和类别的方法。
您可以向本地自定义计数器写入数据,并从本地和远程计数器(系统计数器和自定义计数器)读取数据。您可以使用 PerformanceCounter
类对计数器进行采样,并使用 CounterSample
类从连续的性能计数器样本计算结果。
CounterCreationData
类使您能够在一个类别中创建多个计数器并指定其类型。与 PerformanceCounter
组件关联的其他类提供了对计数器集合、计数器权限和计数器类型的访问。
示例
如何列出所有性能计数器类别
Dim myCategory As PerformanceCounterCategory
Dim myCategories() As PerformanceCounterCategory
myCategories = myCategory.GetCategories()
For Each myCategory In myCategories
'Loop thru it.
Next
通过此类,我们可以引用现有的性能计数器并读取其值,创建可以写入和读取的自定义性能计数器,并通过代码确定性能计数器是自定义的还是内置的。
有关详细信息,请访问 MSDN。
System.Diagnostics.Debug
提供一组有助于调试代码的方法和属性。此类不可继承。我们都习惯于使用此类。以下是此类的重要方法。
Assert
:重载。检查条件,如果条件为 false,则显示一条消息Write
/WriteLine
:将调试信息写入Listeners
集合中的跟踪侦听器WriteIf
/WriteLineIf
:如果条件为 true,则将调试信息写入Listeners
集合中的跟踪侦听器。
System.Diagnostics.Trace
此类提供了一组帮助您跟踪代码执行的方法和属性。您可以使用 Trace
类中的属性和方法来检测发布版本。检测使您能够监视应用程序在实际环境中的运行状况。成员几乎与 Debug
类相似。
System.Diagnostics.StackTrace & System.Diagnostics.StackFrame
这些类将公开例程的堆栈信息。以下示例将返回调用方法的名称。
Dim st As New StackTrace(False)
'just going one level above in the stacktrace
Dim sf As StackFrame = st.GetFrame(1)
mp_MethodName = sf.GetMethod().Name()
mp_MethodName = sf.GetMethod().DeclaringType().Name() & ":" & mp_MethodName
您可以在 此处找到大量示例。
System.Diagnostics.SymbolStore
System.Diagnostics.SymbolStore
命名空间提供了允许您读取和写入调试符号信息的类,例如源行到 Microsoft 中间语言 (MSIL) 的映射。面向 .NET Framework 的编译器可以将调试符号信息存储到程序员数据库 (PDB) 文件中。调试器和代码分析工具可以在运行时读取调试符号信息。