Go并发情况下debug调试无法进入所需调试goroutine,附带并发测试代码

news2024/11/19 11:23:15

大部分情况
问题
在使用go语法的时候,由于并发情况,只能调试一个goroutine,但存在随机性,难指定
在这里插入图片描述
找到你所需的线程直接切换即可跳转。没有找到同时调试多个的办法,理论上是不行的,不然就不叫并发了。


特殊情况:此线程监控某事件,执行一半

首先断点打到用go修饰的函数,在go修饰的函数里面打个断点
执行debug的时候,在到了go修饰函数的时候使用resume program直接进入修饰函数里面(step into 进不去,run to cursor也可以,鼠标放在所需位置即可)
在这里插入图片描述
此时,线程会切换到你的go函数线程
在这里插入图片描述
多次尝试都能进入此断点

测试代码

go黑皮书《The Go Programming Language》回声案例
reverb.go模拟服务端,即山谷
netcat.go模拟客户端,即人

如果要测试并发,先跑起来reverb.go,然后netcat执行go build netcat.go打包二进制文件,然后.netcat执行,执行两个以上测试

使用

reverb.go

// Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan.
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/

// See page 224.

// Reverb2 is a TCP server that simulates an echo.
package main

import (
	"bufio"
	"fmt"
	"log"
	"net"
	"strings"
	"time"
)

func echo(c net.Conn, shout string, delay time.Duration) {
	fmt.Fprintln(c, "\t", strings.ToUpper(shout))
	time.Sleep(delay)
	fmt.Fprintln(c, "\t", shout)
	time.Sleep(delay)
	fmt.Fprintln(c, "\t", strings.ToLower(shout))
}

// !+
func handleConn(c net.Conn) {
	input := bufio.NewScanner(c)
	for input.Scan() {
		go echo(c, input.Text(), 3*time.Second)
	}
	// NOTE: ignoring potential errors from input.Err()
	c.Close()
}

//!-

func main() {
	l, err := net.Listen("tcp", "localhost:8000")
	if err != nil {
		log.Fatal(err)
	}
	for {
		conn, err := l.Accept()
		if err != nil {
			log.Print(err) // e.g., connection aborted
			continue
		}
		go handleConn(conn)
	}
}

netcat.go

package main

import (
	"io"
	"log"
	"net"
	"os"
)

func main() {
	conn, err := net.Dial("tcp", "localhost:8000")
	if err != nil {
		log.Fatal(err)
	}
	done := make(chan struct{})
	go readFromConn(conn, done)
	mustCopy(conn, os.Stdin)
	go mygoroutine()
	conn.Close()
	<-done // wait for background goroutine to finish
	log.Println("end")
}

func mustCopy(dst io.Writer, src io.Reader) {
	if _, err := io.Copy(dst, src); err != nil {
		log.Fatal(err)
	}
}
func mygoroutine() {
	log.Println("okkk")
}
func readFromConn(conn net.Conn, done chan struct{}) {
	log.Println("done1")
	io.Copy(os.Stdout, conn) // NOTE: ignoring errors
	log.Println("done")
	done <- struct{}{} // signal the main goroutine
}

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

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

相关文章

美颜sdk的商业价值分析:如何利用美颜技术赢得市场?

当下&#xff0c;从自拍软件到直播平台&#xff0c;从手机相机到电商平台&#xff0c;美颜技术都有着广泛的应用。而美颜sdk作为美颜技术的重要组成部分&#xff0c;其商业价值也越来越受到关注。 一、美颜sdk有哪些商业价值&#xff1f; 随着美颜技术的不断发展&#xff0c…

历年系统架构师下午真题详解

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 试题一是必答题 阅读以下关于软件架构设计与评估的叙述&#xff0c;在答题纸上回答问题1和问题2。 【说明】 某电子商务公司拟升级其会员与促销管理系统&#…

LinkedList 的作者:我写了 LinkedList,但我自己都不用

Joshua Bloch&#xff1a;我写了 LinkedList&#xff0c;但我自己都不用&#xff01; 对&#xff0c;Joshua Bloch 就是 LinkedList 的作者&#xff01; 如果你真信了作者的话&#xff0c;那就真的大错特错了&#xff0c;LinkedList 虽然用的没有 ArrayList 多&#xff0c;但使…

FISCO BCOS(三十六)———Python Sdk window环境部署及应用开发

1、环境要求 Python环境:python 3.6.3, 3.7.3(最好是3.7.3,因为我是) FISCO BCOS节点:可以直接建链,可以是节点前置,也可以是一键部署2、安装python 2.1、python下载地址 https://www.python.org/downloads/release/python-373/2.2、环境变量配置 3、下载pip 3.1、pip下…

【企业信息化】第1集 世界排名第一的免费开源ERP: Odoo 16 CRM客户关系管理系统

文章目录 前言一、概览二、使用功能1.加快销售速度2.销售线索3.机会4.客户5.高效沟通6.报告7.集成 三、总结 前言 世界排名第一的免费开源ERP: Odoo 16 CRM客户关系管理系统。真正以客户为中心的CRM。 一、概览 获得准确预测 使用可操作数据&#xff0c;以做出更好的决定。 获…

BUUFCTF—[极客大挑战 2019]Upload 1

考点&#xff1a; 文件上传黑名单绕过内容绕过目录浏览 文件上传 1. 测试是黑名单还是白名单 上传图片1.png成功&#xff0c;上传1.php失败&#xff0c;1.pngs成功&#xff0c;说明是黑名单过滤。 所以要寻找黑名单外的php文件&#xff1a;php, php3, php5, php7, phtml都能…

Linux基础学习---4、文件权限类、搜索查找类、压缩和解压类

1、文件权限类 1.1 文件属性 Linux系统是一种典型的多用户系统&#xff0c;不同的系统处于不同的地位&#xff0c;拥有不同的权限。为了保护系统的安全性&#xff0c;Linux系统对不同的用户访问访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。在Lin…

港联证券|北交所行情活跃 近九成个股5月以来录得上涨

北交所A股昨日表现活跃&#xff0c;北证50指数上涨1.92%。数字人30cm涨停&#xff0c;云创数据涨18.38%&#xff0c;流金科技涨16.61%&#xff0c;广道数字、艾融软件、惠丰钻石等涨幅居前。 数字人昨日录得近16个月以来最大涨幅。近3个交易日&#xff0c;数字人累计获得融资净…

微服务架构下网关的技术选型

一、简介 当使用单体应用程序架构时&#xff0c;客户端&#xff08;Web 或移动端&#xff09;通过向后端应用程序发起一次 REST 调用来获取数据。负载均衡器将请求路由给 N 个相同的应用程序实例中的一个。然后应用程序会查询各种数据库表&#xff0c;并将响应返回给客户端。微…

ant-design实现树的穿梭框,穿梭后右侧是已选树(一)

主要内容: 基于ant-design树的穿梭框&#xff0c;实现穿梭后右侧是已选树&#xff0c;&#xff08;当前antd右侧只有一个层级&#xff09; 理想的树的穿梭框&#xff1a; 左边是完整的树&#xff0c;右边是已选的树&#xff0c;左边已选穿梭到右边左边已选的消失&#xff0c;右…

LeetCode-206. 反转链表

目录 双指针递归 题目来源 206. 反转链表 双指针 定义两个指针&#xff1a; pre 和 cur&#xff1b;pre 在前 cur 在后。 每次让 cur 的 next 指向 pre&#xff0c;实现一次局部反转 局部反转完成之后&#xff0c;pre 和 cur 同时往前移动一个位置 循环上述过程&#xff0c;直…

AWS S3 跨账号迁移

目录 **迁移架构&#xff1a;****具体实施&#xff1a;****1. 在目标账号创建策略&#xff08;S3MigrationPolicy&#xff09;和角色&#xff08;S3MigrationRole&#xff09;****2. 安装 aws cli&#xff0c;并配置$ aws configure&#xff0c;**[请参阅 AWS CLI 文档中的安装…

C++回调函数

回调函数 文章目录 回调函数一、函数指针二、回调函数应用Reference 一、函数指针 指针是一个变量&#xff0c;是用来指向内存地址。 一个程序运行时&#xff0c;所有和运行相关的东西都需要加载到内存当中&#xff0c;因此可以通过指针指向该内存。 函数是存放在内存代码区…

Otter CTF--Network(web网络1-3)

目录 一.题目 1.Birdmans Data 2.Look At Me 3.Otter Leak 一.题目 网址 OtterCTF 1.Birdmans Data 下载文件&#xff1a; .pcap文件 Wireshark打开&#xff1a; 既然是web 我们就从http分析&#xff1a; 追踪流 HTTP流&#xff1a; 发现两个密钥key&#xff1a; {"…

数据集 | 基于语音(Speech)/多模态(Multimodal)的情绪识别数据集,格式及下载

本文主要介绍了一些常用的语音&#x1f5e3;识别数据集&#xff0c;文件格式以及下载地址&#xff1a; 目录 1.IEMOCAP Emotion Speech Database(English) 2.Emo-DB Database(German) 文件命名 对象 3.Ryerson Audio-Visual Database of Emotional Speech and Song (Engli…

解密JS代码:一个有趣的故事

作为一名前端开发者&#xff0c;我们经常需要处理加密和解密的任务。近日&#xff0c;我遇到了一个有趣的故事和一个需要解密的JavaScript代码。让我和你分享一下这个故事以及我是如何解密这段代码的。 最近我收到了一个任务&#xff0c;要将一个网站上的一段JavaScript代码进…

torch_geometric获取datasets(解决连不了外网的问题)

文章目录 1. torch_geometric.data介绍2. 使用Planetoid下载Cora数据集的代码3. 解决程序运行的机器无法联网的问题3.1 尝试运行&#xff0c;查看数据集下载链接3.2 放置到对应文件夹下3.3 重新运行之前写的程序 4. 一点感慨 1. torch_geometric.data介绍 torch_geometric&…

进货商模式玩法解析:当老板、亲自进货、自己赚差价?

如今很多人都看到互联网的发展前景&#xff0c;有了创业的想法&#xff0c;但是资金、技术、市场等问题给他们带来了瓶颈。进货商模式的出现&#xff0c;为这些&#xff08;文章编辑ycy6221&#xff09;有创业想法&#xff0c;有梦想的人打破了这些限制&#xff0c;而且还可以实…

HTTP协议演进:为什么说HTTP/1.1的时代已经过去了

前言 欢迎来到今天的每日一题&#xff0c;每日一提。昨天聊到了&#xff0c;HTTP 是什么。有哪些组成部分。并且最后提到了 HTTP 的一些缺点&#xff0c;比如&#xff1a;性能较低&#xff0c;容易导致网络拥塞和延迟&#xff0c;不支持服务器推送等等。设计协议的大佬们&#…

ChatGPT实现安全漏洞检查

安全漏洞检查 几乎每一项新技术的出现&#xff0c;都会首先被运用在安全领域&#xff0c;ChatGPT 也不例外。在 ChatGPT 出现的第一时间&#xff0c;利用 ChatGPT 编写钓鱼邮件&#xff0c;进行社会工程学攻击&#xff0c;辅助分析代码漏洞等等就成为热门话题。其实技术只是工…