热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

提供调试便利——C#中的Debugger类

Debugger类存在于命名空间System.Diagnostics中,它提供了一些静态方法以帮助用户调试代码。这是一个经常被忽视的类,但是在某些情况下

Debugger类存在于命名空间System.Diagnostics中,它提供了一些静态方法以帮助用户调试代码。这是一个经常被忽视的类,但是在某些情况下,它会很有用。
 

Debugger.Break

这个方法和在Visual Studio中加入红色的断点是一模一样的,但是好处在于,有些程序员不喜欢满屏幕的红色断点,这个时候用这个方法来替代吧。
 

Debugger.Log

像调试器发出消息,在调试的时候很有用,特别是当Debugger Attach到某个进程的时候。
 

Debugger.Launch

个人觉得这是最有用的一个方法。试想,我们经常遇到需要调试一个进程,但是这个进程是并不是入口点程序,而是一个被其他程序所创建的进程。
如果我们希望要调试的这个进程有BUG会自动崩溃(如果我们需要调试它,那么一般情况下它确实可能会崩溃)这个时候我们一般有两个选择:

  • 眼疾手快的在它崩溃之前,在拥有源文件的VS中选择Attach到这个进程上面,但是如果这个进程启动之后很快就CRASH,那就只有祈祷程序员的手够快了。
  • 在这个要调试的程序中加入诸如Thread.Sleep或者MessageBox.Show等方法把进程给挂住,然后在Attach到这个进程上面。

第二个办法是可行的,但总感觉不是那么优雅,难道堂堂C#没有提供一个简洁的方法来供我们处理这种情况吗?
答案是肯定的,使用Debugger.Launch,在程序中加入这一句,

Debugger.Launch();

那么当进程运行到这里的时候会自动停下来并弹出提示框
在这里插入图片描述
选择正确的调试器之后,进程会接着Debugger.Launch往下执行,这样就可以愉快的调试了。
在这里插入图片描述


推荐阅读
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文介绍如何在 Visual Studio Code 中使用 Jupyter Notebook 插件,包括创建、编辑和运行笔记本的基本操作。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 如何在窗口右下角添加调整大小的手柄
    本文探讨了如何在传统MFC/Win32 API编程中实现类似C# WinForms中的SizeGrip功能,即在窗口的右下角显示一个用于调整窗口大小的手柄。我们将介绍具体的实现方法和相关API。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文详细介绍了如何在 Windows 环境下使用 node-gyp 工具进行 Node.js 本地扩展的编译和配置,涵盖从环境搭建到代码实现的全过程。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ... [详细]
  • 异常要理解Java异常处理是如何工作的,需要掌握一下三种异常类型:检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常ÿ ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 本文详细介绍了如何在PHP中进行数组删除、清空等操作,并提供了在Visual Studio Code中创建PHP文件的步骤。 ... [详细]
  • 本文详细介绍了在 Windows 7 系统中配置 Nginx 1.10.3 和 PHP 7.1.1 NTS 的步骤,包括修改 PHP 配置文件、处理依赖项以及创建批处理脚本启动和停止服务。重点解释了如何解决常见的运行时错误。 ... [详细]
  • 本文将带您了解Cocos家族的不同版本和分支,特别是Cocos Creator的发展历程及其核心特性,帮助初学者快速入门。 ... [详细]
author-avatar
剡亚军_191
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有