3

远程调试 golang 应用

 2 years ago
source link: https://gythialy.github.io/How-to-remote-debug-golang-by-dlv/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

远程调试 golang 应用

2021-04-202022-05-12Notes

  • STEP1: 编写 Dockerfile

    FROM golang:1.16 AS build-env

    # Build Delve

    RUN go get github.com/go-delve/delve/cmd/dlv

    COPY . /app
    WORKDIR /app

    RUN go mod download

    EXPOSE 40000

    ENTRYPOINT ["dlv", "--listen=:40000", "--headless=true", "--api-version=2", "--accept-multiclient", "debug", "/app/cmd/"]

    注:这里是把代码全部复制到进行中,也可以只复制编译好的文件。如果是编译好的文件,编译的时候需要设置 -gcflags "all=-N -l"

  • STEP2: 编译 docker 镜像

    docker build -f docker/Dockerfile.debug -t qlcchain/go-qlc:debug  .
  • STEP3: 启动 docker 容器并绑定端口

    docker run --rm -it -p 40000:40000 qlcchain/go-qlc:debug \
    --build-flags="-tags=testnet" \
    -- --configParams="rpc.rpcEnabled=true;p2p.discovery.mDNSEnabled=false"

    注:通过 --build-flags 指定编译参数; -- 指定传给 app 的参数

  • STEP4: 在 Goland 中连接容器

    dlv.png

    注:除了 Goland 外,还有一些其他的 GUI 可以选择

---EOF---


Recommend

  • 92

    最近用 Golang 实现了一个日志搜集上报程序(内部称 logger 项目),线上灰度测试过程发现 logger 占用 CPU 非常高(80% - 100%)。而此项目之前就在线上使用,用于消费 NSQ 任务, CPU 占用一直在 1%,最近的修改只是添加了基于...

  • 55

    最近用 Golang 实现了一个日志搜集上报程序最近用 Golang 实现了一个日志搜集上报程序(内部称 logger 项目),线上灰度测试过程发现 logger 占用 CPU 非常高(80% - 100%)。

  • 94
    • 微信 mp.weixin.qq.com 7 years ago
    • Cache

    Android远程调试Web页面

  • 67
    • www.10tiao.com 6 years ago
    • Cache

    启用Gradle远程调试

    编写gradle对象插件的实现方式有3种: 直接写在build.gradle中,这种方式简单省事,比较适合比较小的插件编写 在项目根目录下建立buildSrc目录 建立一个独立的...

  • 32

    因为正在开发一个项目,而这个项目使用到了 puppeteer ,其中有个功能是在 puppeteer 打开的chrome里打开多个 Tab ,并进行管理。 虽然 puppeteer 可以打开多个网站,但...

  • 48

    监控和调试功能是应用必备的属性之一,其手段也是多种多样。 一般地,我们可以通过:线上日志, zabbix, grafana, cat 等待系统做一问题留底,有问题及时报警,从而达到监控效果。 而对于应用的调试,我之前的文章也提...

  • 45

    网页在手机浏览器打开时,怎么调试?...

  • 54
    • www.tuicool.com 5 years ago
    • Cache

    远程调试 Android 设备网页

    网页在手机浏览器打开时,怎么调试? 安卓设备的 Chrome 浏览器支持远程调试,可以使用桌面浏览器的开发者工具。本文介绍如何进行远程调试。

  • 14

    记录下 dlv 的远程调试,建议不要在代码里加 fmt 去调试。不谈 goland 啥的远程调试,本文章目前只写 dlv 的命令行配合远端调试。 一些前提须知符号链接路径package mainimport ( "fmt" "os")

  • 6

    远程Java应用的RASP调试教程 Java RASP是基于Java Agent技术实现的,而Java Agent代码无法独立启动,必须依赖于一个Java运行时程序才能运行。 如何调试一个Java Agent可以参考之前的一篇推...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK