Go远程调试揭秘:如何在异地精准操控代码?

Golang dlv远程debug 如果不想remote程序阻塞等debug,而是直接执行,那么可以在启动远程程序的时候添加。如果不想remote程序阻塞等debug,而是直接执行,那么可以在启动远程程序的时候添加。执行后,会一直停在这个页面,等待goland连接后再往下走。zip文件,下载后( 如果没权限,记得 执行。如果不到500M,dlv会因为内存不足启动不起来。建议使用方式2,可以启动后debug,更方便。服务启动起来后,远程debug就会生效了。服务启动起来后,远程debug就会生效了。执行后会一直停留在这里,等待客户端连接。 阅读详情

Go语言的远程调试通常依赖于几个关键组件和原理,主要涉及调试器、调试代理(如 Delve)、网络通信协议等方面。下面简要说明Go远程调试的基本原理和常见实现方式。

调试器(Debugger)

调试器是远程调试过程中的核心组件,它负责在源代码级别提供程序执行的控制能力,如设置断点、单步执行、查看变量值等。Go语言的一个流行的调试器是Delve,它提供了丰富的调试功能,并且支持远程调试。

调试代理(Delve)

在远程调试中,Delve可以作为一个在目标机(即运行Go应用的服务器)上运行的调试代理。它监听来自开发者机器上IDE或命令行调试客户端的网络连接。

网络通信协议

远程调试涉及到在网络上的两个实体(通常是开发者机器上的IDE或调试客户端与目标机上的调试代理Delve)之间进行通信。这种通信通常基于TCP/IP协议。Delve调试代理监听一个TCP端口,等待调试客户端的连接。一旦连接建立,调试命令就会通过这个连接发送给调试代理,调试代理执行这些命令并将结果返回给调试客户端。

远程调试流程

  1. 启动调试代理:在目标机上启动Delve调试代理,并让它监听一个网络端口。Delve会启动Go应用并在指定的端口上等待来自调试客户端的连接。

  2. 连接调试代理:在开发者机器上,通过IDE或命令行工具连接到Delve调试代理的TCP端口。这通常需要指定目标机的IP地址和Delve监听的端口。

  3. 进行调试:一旦连接建立,开发者可以通过IDE或命令行工具发送调试命令(如设置断点、开始执行、单步跳过等)到Delve调试代理。Delve执行这些命令,并将执行结果或应用状态返回给调试客户端。

  4. 结束调试:调试会话结束时,调试客户端断开与Delve的连接。Delve调试代理可以继续保持运行等待下一次连接,或者根据配置退出。

安全性考虑

由于远程调试涉及网络传输,因此安全性是一个重要考虑。运行Delve调试代理时,应确保网络通信被适当加密(例如使用SSH隧道或VPN),并且只在受信任的网络环境中暴露调试端口。

总结

Go远程调试依赖于在目标机上运行的调试代理(如Delve)与开发者机器上的IDE或调试客户端之间的网络通信。这种模式允许开发者在不同的物理位置对运行中的Go应用进行断点设置、查看状态、单步调试等操作,大大提高了调试的灵活性和效率。然而,使用远程调试时,需要注意网络安全和调试环境的配置。

Golang远程调试Debug环境 最近在做 Operator 的二次开发,开发语言是Golang。Operator 开发时候需要用到k8s集群,遗憾的是k8s编排的容器网络与本地网络不通,无法直接进行debug。k8s 调整网络的方式比较麻烦,曲线救国在 k8s node 上安装Golang环境,本地进行远程debug。**注意:**Goland 中的代码要跟远程debug的代码一致,否则调试结果不准确,通过git进行代码同步是个不错的选择。从Templates 中创建一个 Go Remote 启动即可。 阅读详情

相关推荐

GoLand Debug实战:Delve断点、goroutine与远程调试

在 Go 工程实践中,调试器是把运行时状态变成可观察现场的基础设施。其原理通常由 IDE 发起调试会话,再由 Delve 等底层调试器启动或附加目标进程,通过断点、栈帧、变量和 goroutine 快照还原执行路径。相比打印日志,图形化调试的价值在于冻结关键分支,同时观察调用栈、并发任务、请求参数与数据库操作。它适用于 HTTP 服务、单元测试、容器内排查和远程调试等场景。GoLand Debug 将 Delve 封装为可视化配置与断点体系,覆盖条件断点、日志断点、异常捕获以及 optimized away

weixin_28831461的博客 44

Golang 远程调试工具——详细步骤

在本地,我们开启调试时,无法访问某些地址,导致无法正常调试。虽然放在服务器上的是可执行的二进制文件,但因为要调试,所以也需要go语言的解释器。《大话数据结构》:此书适合自学的程序员,它用一个故事、趣味的题目、一部电影的介绍等形式来作为每一个知识点的形象类比,通俗易懂。当我们需要在本地电脑调试服务器上的Go应用程序的时候,就需要使用远程调试工具了。端口:保持不变,如果变动的话,后续再服务器上启动时开启的端口也要保持一致。6> 点击应用,点击调试,这时候会出现,正在连接,服务器Ip:端口。

wang52755的博客 2486

golang debug调试

golang debug 1: 本地调试 2: 附加到进程 3: 远程调试

cxhblog的博客 2363

Go语言远程调试

Go语言远程调试

YIYIYI 1332

Tessent_StdcellLib

第二种为 Tessent Cell lib,既可用于功能仿真,也可以用于测试逻辑插入。lib包含了用于仿真的功能信息,也包含DFT cell属性。如何使用tessent工具将stdcell verilog 仿真模型转换为tessent自己的lib。运行后工具会生成一个atpg的lib文件,打开文件,找到一个带SI的DFF,只有功能描述。tessnt lib分为两种,第一种为ATBG lib,可以用于仿真;打开生成的lib文件,多了dft_cell_selection。第二部:编写attributes文件。

qq_40411444的博客 2135

行列式详解:从定义到应用

本文系统介绍了行列式的核心概念和应用。首先从二阶、三阶行列式入手,逐步扩展到n阶行列式的定义,讲解了余子式和代数余子式的概念。其次,详细阐述了行列式的重要性质,包括转置不变性、行列交换变号等基本性质以及乘积性质等推论。在计算方法方面,介绍了按行展开法、化上三角矩阵法等实用技巧,并列举了特殊行列式的计算案例。最后重点讨论了行列式在克拉默法则、矩阵可逆性判断、几何体积计算及线性相关性判断等领域的应用。文章强调理解行列式的几何意义和灵活运用性质的重要性,并给出了学习建议和常见误区提示。行列式作为连接代数与几何的桥

aichitang2024的博客 3036

GO语言远程DEBUG

在windows系统下开发Linux环境下的分布式系统组件时,往往因为组件之间的相互依赖调用需要进行服务端调试,delve是一款开源的go语言调试器,常用的go语言IDE,如goland vscode等都是依靠delve来进行调试操作的. 使用goland远程调试 使用goland来进行远程调试最好使用goland的 2019.1版本,原因是在goland 2019.1之前的版本中,因为调试路径映...

mayongze321的博客 5392

深信服 SANGFOR 设备密码恢复和配置备份恢复

、恢复密码 当我们拿到一台设备要去配置管理的时候,首先是要确认设备的登录IP,其次就是确认设备控制台登录密码。不知情的情况下如何找到设备的登录IP,请参考文档: http://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=9484 下文中提到的关于“网关升级客户端”的一些功能,也请参考此文档。 那么恢复密码,大家都知道有2种方法:U盘恢复密码、交叉线恢复密码。 1、U盘恢复密码 注意:仅恢复admin密码,不影响配置。 U盘恢复密码的前

李先生在闯荡江湖 1万+

Go编程语言的调试器Delve | Goland远程连接Linux开发调试(go远程开发)

Golang 支持使用 gdb 来进行调试,这与 C 语言几乎是一致的。但 GDB 是一个通用性调试工具,不非常能直接地反映出 Golang 的特点,所以,推荐使用 delve(`https://github.com/go-delve/delve`),可以理解为是 Golang 版本的 GDB,使用方式大致与 gdb 一致。

西京刀客 3256

Investigating Bi-Level Optimization for Learning and Vision from a Unified Perspective: A Survey and

文章首先从双层优化的角度统一表示了超参数优化、多任务和元学习等复杂学习和视觉问题,建立了一个基于最佳响应的单层重构和一个统一的算法框架,来制定一个基于梯度的双层优化方法,最后讨论了该框架的潜力和未来研究方向。...

dawnyi_yang的博客 1110

从零到一:手把手教你用DJI E-Port套件为M350 RTK开发第三方负载(PSDK V3实战)

本文详细介绍了如何使用DJI E-Port套件为M350 RTK开发第三方负载,涵盖硬件配置、开发环境搭建及实战应用。通过PSDK V3开发套件,开发者可以高效实现负载与无人机的通信,适用于电力巡检等工业场景,提升开发效率与系统稳定性。

weixin_26841743的博客 704

1、GO入门之环境搭建和远程调试

go环入门境搭建&远程调试

qq_41949047的博客 1863

【Davinci开发】:MPU(内存保护)

【Davinci开发】:MPU(内存保护)

2209

Goland 对容器中的 Go 程序断点远程调试

注意的第二点: shell 脚本中需要 sleep 0.5 ,是因为这个是顺序执行,因为 shell 里面最后加了 & 所以不会阻塞,有可能 shell 运行完了,Goland 启动 debug, 但是shell 那里异步启动还没完成,会导致启动失败。红色框起来的的几的按钮以及后面对这几个按钮的解释。

专注基础架构领域 3385

基于STM32+ESP8266+手机APP的心率血氧温湿度监测报警系统设计(项目资料ID:18)

基于 STM32 微控制器、ESP8266 无线模块和 QT 手机 APP 的多参数监测报警系统。该系统可实时采集心率、血氧饱和度、环境温湿度等参数,通过 OLED 显示屏本地显示,并通过 WiFi 模块上传至手机 APP 实现远程监测与数据可视化。系统具备报警阈值自定义功能,当参数超出设定范围时,通过蜂鸣器和 LED 进行声光报警。系统以 STM32F103 为控制核心,采用 MAX30102 传感器采集心率和血氧,DHT20 采集温湿度,通过 ESP8266 实现无线通信,配合 QT 开发的手机 APP

以培养嵌入式工程师为己任 1万+

1分钟吃透一篇文献,借助AI辅助各部分精读,效率提升10倍(附AI提示词)

你现在是一名【研究领域】的资深博士,非常擅长阅读与分析长篇论文,那么接下来我会给你上传一篇论文,请你按照我的要求辅助我阅读。

qq_64378896的博客 642

如何使用Goland进行远程Go项目线上调试?

有时候本地环境很难实现“完整的线上环境”的现场,怎么使用goland这个“go语言最强IDE”进行远程线上进行Debug呢?这里将给你答案。

斯是陋室,惟汝德馨 3238

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Go:Delve远程调试指南

远程调试指的是在一台计算机(客户端)上运行调试器,来调试在另一台计算机(服务器)上运行的程序。这对于调试部署在远程服务器上的应用尤其有用。Go语言的远程调试是一个强大的功能,它可以极大地提高我们在复杂环境下的开发和调试效率。希望本文能够帮助读者更好地理解和使用Go的远程调试工具。

十年运维开发经验的王义杰在此分享自己的知识和经验 746

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

golang设置远程调试

go build之后将编译号的dlv命令路径添加到PATH里。2. 目标机器下载源代码并且运行dlv。1. 目标机器构建安装dlv。3.本机添加go remote。

fusugongzi的博客 840

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

go 远程调试dlv

【代码】go 远程调试dlv。

不积跬步,无以至千里;不积小流,无以成江海。 1401

vscode配置golang远程开发调试环境

在golang项目开发中,特别是需要跨平台的项目时,很多时候需要在远程环境下进行开发、编译、调试,比如嵌入式linux场景,我们在windows下开发好的代码,可能需要在linux环境运行,需要在此环境下编译程二进制文件,再运行,如果遇到问题,很多时候只能通过izhi来定位,如果要验证修改的代码,可能还需要先上传到linux开发环境,进行编译->运行->根据日志再定位的过程,特别繁琐,这里vscode提供了强大的远程开发/编译/断点调试等功能,这里介绍下golang的远程开发调试环境搭建方式。...

技术控的笔记 9万+

远程服务器dlv调试(go远程调试服务器代码)

远程服务器dlv调试(go远程调试服务器代码)

weixin_45686265的博客 588

Go 的调试

调试之前,项目文件夹中需要运行命令: go mod init my-app-name go debugger tool dlv,在配置 vscode go 开发环境时就可以安装: 然后 go code 中可以设 breakpoint,选择 vscode -> run -> start debugging,就可以开始调试代码,例如 step over, continue, 等等,这和其他语言比方说 C++ 的调试方法几乎完全一样。 ...

学习笔记 2508

GoLang ~ 远程调试

GoLang ~ 远程调试

南柯好萌的博客 1589

GO-vscode远程开发和调试

远程开发加调试 2.vscode中配置 默认模板 在vscode中鼠标移动到json的字段上会提示可以填写的参数。这里手动添加一条远程调试的配置,配置如下 3.在远程主机中启动dlv

kali_yao的博客 4958

GO远程构建并调试

使用WSL+Delve+Goland进行远程调试

AntiO2的博客 835
上一篇: TypeScript新手指南:何时使用.ts,何时转向.tsx?
下一篇: Kali Linux 开启 ssh
Walter Sun
博客等级 码龄9年 1726粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Walter Sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值