当前位置: 首页 > 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.dtcms.com/a/191512.html

相关文章:

  • 继续预训练 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:蓝牙通信全流程拆解:从广播到连接的每一步
  • 在C++中进行套接字编程时,主要使用以下头文件
  • 易学探索助手-项目记录(九)
  • 什么是函数重载?为什么 C 不支持函数重载,而 C++能支持函数重载?
  • 数据 分析
  • primitive创建图像物体
  • new optimizers for dl
  • 【3Ds Max】.ive格式文件的导出与加载
  • CMake入门与实践:现代C++项目的构建利器
  • 怎样将MM模块常用报表设置为ALV默认格式(MB52、MB5B、ME2M、ME1M等)
  • 对抗系统熵增:从被动救火到主动防御的稳定性实战