当前位置: 首页 > news >正文

C# 调试技巧——日志记录,NuGet内断点

在C#中,Debug.WriteLine()Trace.WriteLine()Console.WriteLine() 都用于输出信息,但它们的用途和适用场景有显著区别。以下是它们的核心差异总结:
在这里插入图片描述

  • Debug.WriteLine()主要适用于控制台程序,输出到控制台
  • Trace.WriteLine() 开发阶段调试输出
  • Console.WriteLine() 运行时状态,适合记录程序运行状态、错误日志等持久化信息。

不同模式调试信息打印

新建一个winform窗体
添加一下事件记录信息,测试Debug模式和Release模式下,打印区别
在这里插入图片描述
结论:Debug模式下,Debug和Trace都打印,Release模式下只打印Trace

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DebugApp
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){Debug.WriteLine("Debug button1_Click");Trace.WriteLine("Trace button1_Click");}/// <summary>/// 窗体加载/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Form1_Load(object sender, EventArgs e){Debug.WriteLine("Debug Form1_Load");Trace.WriteLine("Trace Form1_Load");}/// <summary>/// 窗体关闭/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Form1_FormClosed(object sender, FormClosedEventArgs e){Debug.WriteLine("Debug Form1_FormClosed");Trace.WriteLine("Trace Form1_FormClosed");}}
}

调试记录打印

怎样将我们需要的信息打印出来,
在 app.config/web.config 中配置 Trace 监听器

<?xml version="1.0" encoding="utf-8" ?>
<configuration><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup><!-- 在 app.config/web.config 中配置 Trace 监听器 --><system.diagnostics><trace autoflush="true"><listeners><add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="log.txt" /></listeners></trace></system.diagnostics>
</configuration>

将会在运行目录下,新建一个log.txt文件,将Trace和Debug信息打印
在这里插入图片描述

怎样在NuGet包或dll中打断点调试

已经优化过的代码,不支持,
点击工具-选项 找到调试里面的开启仅我代码就可以在调试的时候只加载用户代码的符号,关掉就可以调试其他代码
在这里插入图片描述

http://www.xdnf.cn/news/445555.html

相关文章:

  • 【HCIA】BFD
  • 化工单元操作实训装置JGSX-205计算机过程控制流体输送操作实训装置
  • 环境配置与MySQL简介
  • 信息安全入门基础知识
  • Python操作MySQL 连接加入缓存层完整方案
  • 【MySQL】(11) 索引
  • 【Java学习笔记】equals方法
  • ElasticSearch重启之后shard未分配问题的解决
  • Rocky Linux 9.5 基于kubeadm部署k8s
  • 3天云南旅游规划
  • Kafka 消费者组进度监控方法解析
  • 【SSL部署与优化​】​​TLS 1.3的核心改进与性能优化​​
  • Java构造器封装继承重写多态
  • Doris
  • Kotlin 中 infix 关键字的原理和使用场景
  • A2DP、HFP、AVRCP分别是什么
  • STL,智能指针和线程安全自选锁读者写者问题
  • 蓝桥杯13届国B 完全日期
  • 【vue】生命周期钩子使用
  • 【行为型之访问者模式】游戏开发实战——Unity灵活数据操作与跨系统交互的架构秘诀
  • 关于Python 实现接口安全防护:限流、熔断降级与认证授权的深度实践
  • 2024年业绩增速大幅回退,泸州老窖未能“重回前三”
  • 使用Rust开发的智能助手系统,支持多模型、知识库和MCP
  • Go 语言 sqlx 库使用:对 MySQL 增删改查
  • Spring Boot requestBody postman
  • 人机环境体系的自主决策与机器系统的自主决策不同
  • 第二章:CSS秘典 · 色彩与布局的力量
  • 时源芯微| KY键盘接口静电浪涌防护方案
  • 【免杀】C2免杀技术(三)shellcode加密
  • ​Android学习总结之handler中源码解析和场景回答