是否可以使用GoLand调试预构建go可执行文件?

是否可以使用GoLand调试预构建go可执行文件?,go,debugging,ide,goland,delve,Go,Debugging,Ide,Goland,Delve,我想知道GoLand是否可以使用该命令进行调试 我们需要这样做的原因是,我们有一个复杂的CGO构建过程,不可能创建一个运行配置 也许附加到流程可以工作,但这似乎不是一个很好的解决方案 VSCode与dlv exec有很好的集成,但是IDE的工作速度太慢而且有缺陷,我希望我们可以使用GoLand 有人找到解决办法了吗 提前感谢。您可以使用与中相同的步骤 这些步骤是: 使用go build-gcflags=“all=-N-l”-o myApp和CGO/etc可能需要的任何其他标志构建二进制文件 使

我想知道GoLand是否可以使用该命令进行调试

我们需要这样做的原因是,我们有一个复杂的CGO构建过程,不可能创建一个运行配置

也许附加到流程可以工作,但这似乎不是一个很好的解决方案

VSCode与dlv exec有很好的集成,但是IDE的工作速度太慢而且有缺陷,我希望我们可以使用GoLand

有人找到解决办法了吗


提前感谢。

您可以使用与中相同的步骤

这些步骤是:

  • 使用go build-gcflags=“all=-N-l”-o myApp和CGO/etc可能需要的任何其他标志构建二进制文件
  • 使用
    dlv--listen=:2345--headless=true--api version=2 exec运行二进制文件。/myApp
  • 转到
    Run | Edit Configurations |+| go Remote
    ,并在端口
    2345
    (或您在delve的
    --listen
    标志中指定的任何其他端口)上创建一个新的运行配置,该配置连接到
    localhost

您可以使用与中相同的步骤

这些步骤是:

  • 使用go build-gcflags=“all=-N-l”-o myApp和CGO/etc可能需要的任何其他标志构建二进制文件
  • 使用
    dlv--listen=:2345--headless=true--api version=2 exec运行二进制文件。/myApp
  • 转到
    Run | Edit Configurations |+| go Remote
    ,并在端口
    2345
    (或您在delve的
    --listen
    标志中指定的任何其他端口)上创建一个新的运行配置,该配置连接到
    localhost

AFAIK(除非在过去几年中有所改变),Delve通过注释代码和编译修改过的二进制文件来工作(与profiler的工作原理非常相似)。因此,您不能将其用于预构建的二进制文件,您需要源代码。我不知道delve是如何工作的,但exec的文档说明:此命令将导致delve执行二进制文件并立即附加到它以开始新的调试会话。请注意,如果未在禁用优化的情况下编译二进制文件,则可能会出现差异Cult要正确调试它。请考虑在GO的早期版本上编译带有-GCFLAGS=“all=-N-L”的调试二进制文件,即-gcFLAGS =“-N-L”。假设在构建过程中可以生成所有需要的调试信息(至少对于代码的GO部分)。。例如,像gdlv甚至VSCode这样的应用程序可以调试binary.AFAIK(除非它在过去几年中发生了更改),Delve通过注释代码和编译修改过的二进制文件来工作(与profiler的工作原理非常相似)。因此,您不能将其用于预构建的二进制文件,您需要源代码。我不知道delve是如何工作的,但exec的文档说明:此命令将导致delve执行二进制文件并立即附加到它以开始新的调试会话。请注意,如果未在禁用优化的情况下编译二进制文件,则可能会出现差异Cult要正确调试它。请考虑在GO的早期版本上编译带有-GCFLAGS=“all=-N-L”的调试二进制文件,即-gcFLAGS =“-N-L”。假设在构建过程中可以生成所有需要的调试信息(至少对于代码的GO部分)。。例如,像gdlv甚至VSCode这样的应用程序都可以调试二进制文件。是的,谢谢,我一直在寻找类似的东西。经过很多麻烦之后,我们设法使用了一个标准的运行配置,但这非常有用。您能帮我们理解运行配置在哪里导致问题吗?我们很想知道t它,看看我们是否可以改进它。对于跟踪器,或者在Twitter上找到与这里相同用户名的我。谢谢!当然。在这种情况下,问题是我们的构建过程有多具体。我们使用cgo使用gcc编译了至少5个cpp库,但是团队中的一些人必须使用Windows使用gcc的MinGW端口,等等…因此有很多问题环境变量、编译器选项和应用程序本身使用了很多标志。因此,在运行配置(即多平台)中获得所有这些都是非常困难的。我们有一个自定义生成系统,可以处理许多复杂的问题,我们希望使用它。换句话说,调试预生成可执行文件是我们正在寻找的功能g。感谢链接,由于我们对GoLand比较陌生,我们可能还需要一些其他问题的帮助。是的,谢谢,我一直在寻找类似的东西。经过很多麻烦之后,我们设法使用了标准的运行配置,但这非常有效,会很有帮助。你能帮我们解决这个问题吗rstand运行配置在哪里导致了问题?我们很想知道这一点,看看是否可以改进它。对于跟踪器,或者使用与此处相同的用户名在Twitter上找到我。谢谢!当然。在这种情况下,问题是我们的构建过程有多具体。我们使用cgo使用gcc编译了至少5个cpp库,但团队中的一些人没有o使用Windows使用gcc的MinGW端口,等等。因此有很多环境变量、编译器选项和应用程序本身使用了很多标志。因此,在运行配置中获得所有这些都是正确的,这也是多平台的,是相当困难的。我们有一个自定义构建系统,可以处理许多复杂的问题,我们希望使用它。在其他wo中rds-调试预构建可执行文件是我们正在寻找的功能。不过,感谢链接,我们还遇到了一些其他问题,我们可能需要帮助,因为我们对GoLand比较陌生。