当前位置: 首页 > 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中打断点调试

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

相关文章:

  • 继续预训练 LLM ——数据筛选的思路
  • MongoDB 的核心概念(文档、集合、数据库、BSON)是什么?
  • “redis 目标计算机积极拒绝,无法连接” 解决方法,每次开机启动redis
  • cursor 学习
  • 通过SMTP协议实现Linux邮件发送配置指南
  • 再来1章linux系列-17 ssh sshd sshd非对称加密(密钥加密)‌SSH对称加密组件/流程
  • 枢轴支压点策略
  • 求助求助,重金酬谢
  • 【AI News | 20250514】每日AI进展
  • 双向长短期记忆网络-BiLSTM
  • git使用的DLL错误
  • QML ComboBox部件的使用
  • MODBUS与PROFIBUS-DP通讯的螺杆空压机控制系统设计与监控实况
  • 【复刻】人工智能技术应用如何影响企业创新(2007-2023年)
  • Step1
  • 海信璀璨505U6真空冰箱闪耀“国家德比”
  • Codeforces Round 996 (Div. 2)
  • Spring 中常见的属性注入方式(XML配置文件)
  • Java从入门到精通 - 方法
  • 欢乐熊大话蓝牙知识1:蓝牙通信全流程拆解:从广播到连接的每一步
  • 最高人民法院、中国证监会联合发布《关于严格公正执法司法 服务保障资本市场高质量发展的指导意见》
  • 上海虹桥国际咖啡文化节周五开幕,来看Coffeewalk通关攻略
  • 孙卫东会见巴基斯坦驻华大使:支持巴印两国实现全面持久停火
  • 广东省中医院脾胃病科大科主任张北平病逝,年仅52岁
  • 秦洪看盘|交易新逻辑,银行股成A股稳定器
  • 马上评丨岂能为流量拿自己的生命开玩笑