在Go语言中如何调试

        调试是确定程序为何不像预期那样工作的过程。程序不像预期那样工作的迹象有很多,包括编译错误、运行阶段错误、文件权限错误以及数据不正确等。调试是程序员经常需要做的工作,而要理解Go语言,就必须明白它提供了哪些工具。使用Go语言开发复杂的程序时,调试将成为日常工作中不可或缺的一部分。

1. 日志

        日志指的是记录程序执行期间发生的情况。无论程序需不需要调试,都会产生日志,这对于理解程序的执行情况很有帮助。很多常见的应用程序都提供了日志功能,这些日志可用来监视应用程序的健康状况、跟踪问题以及发现问题。

        日志并非为报告Bug而提供的,而是可供在Bug发生时使用的基础设施。诸如Nginx等Web服务器在运行期间将日志写入文件,包括访问日志和错误日志。服务器管理员可使用这些日志来调试问题或核实是否一切正常。日志文件为文本文件,能够让您轻松地找到并理解特定的事件或错误。

        Go语言提供了log包,让应用程序能够将日志写入终端或文件。

package mainimport "log"func main() {log.Printf("This is a log message")
}

程序输出:

2024/04/03 09:44:35 This is a log message

        日志信息中包含日期和时间,这在查看日志时很有用。log包还可用来记录发生的致命错误。下面程序生成了一个致命错误,并将其记录到了日志中。

package mainimport ("errors""log"
)func main() {var errFatal = errors.New("We only just started and we are crashing")log.Fatal(errFatal)
}

虽然由于错误导致程序退出了,但是这个程序将一条日志消息写入终端:

2024/04/03 09:49:10 We only just started and we are crashing

        日志可用来了解程序的执行情况,它对调试能起到一定的作用,但是,查看日志对了解发生的意外事件更有帮助。这意味着需要将日志写入文件,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/791400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POI、EasyExcel操作Excel表格详解

POI、EasyExcel 文章目录 POI、EasyExcel1.简介2.结构3.POI-Excel写1.基本操作2.大文件写入HSSF3.大文件写入XSSF4.大文件写入SXSSF 4.POI-Excel读1.基本操作2.数据类型3.计算公式类型数据读取 5.EasyExcel写1.基本写入操作2.日期、数字或者自定义格式转换3.列宽、行高 6.EasyE…

软件杯 深度学习中文汉字识别

文章目录 0 前言1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习中文汉字识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐&#xf…

【Linux】从零认识文件操作

送给大家一句话: 要相信,所有的不美好都是为了迎接美好,所有的困难都会为努力让道。 —— 简蔓《巧克力色微凉青春》 开始理解基础 IO 吧! 1 前言2 知识回顾3 理解文件3.1 进程和文件的关系3.2 文件的系统调用openwrite文件 fd 值…

OpenHarmony实战:小型系统平台驱动移植

在这一步,我们会在源码目录//device/vendor_name/soc_name/drivers目录下创建平台驱动。 建议的目录结构: device ├── vendor_name │ ├── drivers │ │ │ ├── common │ │ │ ├── Kconfig # 厂商驱动内核菜单入口 │ …

七大开源基金会联合制定符合 CRA 法案的共同标准

欧洲议会上个月通过的《欧洲网络弹性法案》(CRA) 制定通用规范和标准 Apache 软件基金会、Blender 基金会、Eclipse 基金会、OpenSSL 软件基金会、PHP 基金会、Python 软件基金会 和 Rust 基金会 这项工作由 Eclipse 基金会牵头,旨在建立基于现有开源最佳实践的安全…

yolov8训练流程

训练代码 from ultralytics import YOLO# Load a model model YOLO(yolov8n.yaml) # build a new model from YAML model YOLO(yolov8n.pt) # load a pretrained model (recommended for training) model YOLO(yolov8n.yaml).load(yolov8n.pt) # build from YAML and tr…

巧用lambda表达式构建各种“树”

简述 利用jdk8 lambda表达式分组函数,可巧妙构建各种树,比如地区树,可以利用其多线程特性充分利用CPU提高性能。 分组函数:Collectors.groupingBy() 开起多线程:list.parallelStream() 实例 以地区为例&#xff1…

9.图像中值腐蚀膨胀滤波的实现

1 简介 在第七章介绍了基于三种卷积前的图像填充方式,并生成了3X3的图像卷积模板,第八章运用这种卷积模板进行了均值滤波的FPGA实现与MATLAB实现,验证了卷积模板生成的正确性和均值滤波算法的MATLAB算法实现。   由于均值滤波、中值滤波、腐…

leet hot 100-13 最大子数组和

53. 最大子数组和 原题链接思路代码 原题链接 leet hot 100-10 53. 最大子数组和 思路 生成一个数字来记录last 表示前面数字全部之和与0取最大值 如果大于0 就加上如果不大于0 就不管 从当前位置从新开始遍历计算 时间复杂度O(n) 空间复杂度(1) 代码 class Solution {…

JVM剖析

0.前言 Java 是当今世界使用最广泛的技术平台之一。使用 Java 或 JVM 的一些技术包括: Apache spark用于大数据处理,数据分析在JVM上运行;用于数据流的Apache NiFi在内部使用的也是 JVM;现代 Web 和移动应用程序开发中使用的React native使用 的也包含…

Boost编译使用

Boost编译使用 文章目录 Boost编译使用写在前面测试环境 下载编译目录结构直接使用手动编译Boost.Build编译 参考 使用Vs中使用Qt中使用CMake中使用代码中使用 写在前面 Boost 是一个非常强大的 C 开源库,提供了许多高质量的、经过良好测试的 C 组件。 Boost 的主要特点包括广…

HTTPS RSA 握手解析(计算机网络)

传统的 TLS 握手基本都是使用 RSA 算法来实现密钥交换的,在将 TLS 证书部署服务端时,证书文件其实就是服务端的公钥,会在 TLS 握手阶段传递给客户端,而服务端的私钥则一直留在服务端。 在 RSA 密钥协商算法中,客户端会…

佳能打印机E568扫描书和文件方法

官方网站; Canon : Inkjet 手册 : IJ Scan Utility : 启动IJ Scan Utility 打开打印机电源 扫描一个文件,翻页后盖好盖子。再点击扫描。 所有扫描结束之后点退出 点击保存

easyexcel-获取文件资源和导入导出excel

1、获取本地资源文件,根据模板填充数据导出 public void exportExcel(HttpServletResponse httpResponse, RequestBody AssayReportDayRecordQuery query) {AssayReportDayRecordDTO dto this.queryByDate(query);ExcelWriter excelWriter null;ExcelUtil.config…

【无限列车1】SpringCloudAlibaba 与 SpringBoot后端架构的搭建

【无限列车1】SpringCloudAlibaba 与 SpringBoot后端架构的搭建 1、版本说明二、日志相关配置3、AOP 打印日志4、下载开源前端后台管理系统5、添加网关模块6、集成数据库和mp(1) 添加驱动和mp依赖(2) 数据库配置(3) 使用MybatisPlus 7、加密 yaml 文件中的内容(1) 依赖(2) 敏感…

SVG XML 格式定义图形入门介绍

SVG SVG means Scalable Vector Graphics. SVG 使用 XML 格式定义图形SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失SVG 是万维网联盟的标准 Hello World Use SVG in html and you can see: Link to the SVG file You can use <a> tag to link to the svg…

02---webpack基础用法

01 entry打包的入口文件&#xff1a; 单入口entry是一个字符串:适用于单页面项目module.exports {entry:./src/index.js}多入口entry是一个对象module.exports {entry:{index:./src/index.js,app:./src/app.js}} 02 output打包的出口文件&#xff1a; 单入口配置module.ex…

基于SSM的网络视频播放器

目录 背景 技术简介 系统简介 界面预览 背景 互联网的迅猛发展彻底转变了全球各类组织的管理策略。自20世纪90年代起&#xff0c;中国政府和企业便开始探索利用网络系统进行信息管理。然而&#xff0c;早期的网络覆盖不广泛、用户接受度不高、相关法律法规不完善以及技术开…

git 提交一个pr

为了向一个项目提交一个PR&#xff08;Pull Request&#xff09;&#xff0c;你需要遵循一系列步骤&#xff0c;这通常包括&#xff1a; Fork项目&#xff1a;首先&#xff0c;你需要在GitHub上找到项目&#xff0c;并点击“Fork”按钮。这将会创建项目的一个副本到你的GitHub账…

QT之单例模式

一.概述 1.什么是单例模式 单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供全局访问点以访问该实例。 在应用程序的整个生命周期内&#xff0c;只能创建一个特定类的对象。 单例模式常用于需要…