How to create a debug configuration for a specific .go file in VSCode?

王林
Release: 2024-02-10 18:42:08
forward
1050 people have browsed it

如何在 VSCode 中为特定 .go 文件创建调试配置?

When using VSCode for Go language development, we often need to debug to solve problems. However, for specific .go files, we may need to create custom debug configurations. So, how do you create a debug configuration for a specific .go file in VSCode? In this article, PHP editor Youzi will introduce you to the specific steps and precautions in detail to help you achieve this goal easily. Whether you are a beginner or an experienced developer, this article will provide you with valuable guidance. let's start!

Question content

Currently, you must first focus on the .go file in the editor for debugging, and then press the F5 key to start debugging.

What I want is to be able to press F5 to start debugging, but not have to focus on main.go in the editor first.

This is the inventory configuration generated by VSCode. You must pay attention to the .go file before F5:

{
        "name": "Launch Package",
        "type": "go",
        "request": "launch",
        "mode": "auto",
        "program": "${fileDirname}",
    }
Copy after login

Try specifying program and cwd to satisfy it:

{
        "name": "Launch Package",
        "type": "go",
        "request": "launch",
        "mode": "auto",
        "program": "${workspaceFolder}/cmd/sym_dump/main.go",
        "cwd": "${workspaceFolder}/cmd/sym_dump",
    }
Copy after login

But this doesn't work, it complains about function not found:

Starting: C:\Users\aybe\go\bin\dlv.exe dap --listen=127.0.0.1:49541 from C:\GitHub\psx_mnd_sym/cmd/sym_dump
DAP server listening at: 127.0.0.1:49541
Build Error: go build -o C:\GitHub\psx_mnd_sym\cmd\sym_dump\__debug_bin2780105186.exe -gcflags all=-N -l .\main.go
# command-line-arguments
.\main.go:340:13: undefined: dumpTypes
.\main.go:344:14: undefined: dumpSourceFiles
.\main.go:348:14: undefined: dumpDecls
.\main.go:357:13: undefined: dumpTypes
.\main.go:365:13: undefined: dumpIDAScripts
.\main.go:380:13: undefined: dumpTypes (exit status 1)
Copy after login

The actual function is located in another .go file in the same directory as program.

Both files have package main specified at the top of them.

In this case, how do I create a debug configuration for a specific .go file?

Solution

Specify the program attribute as the directory:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Package",
      "type": "go",
      "request": "launch",
      "mode": "auto",
      "program": "${workspaceFolder}/cmd/sym_dump"
    }
  ]
}
Copy after login

${fileDirname} is The folder path of the currently opened file. There is a reason why the default Launch Package template uses ${fileDirname} instead of ${file} (used by the Launch file template) .

Let's take a look at Documentation First of all dlv debug:

There is not much information about package. Let's turn to the doc of go run:

If we specify the program attribute as ${workspaceFolder}/cmd/sym_dump/main.go, it means that the package contains a single file (main.go). But the thing is that the package contains another file that defines dumpTypes, dumpSourceFiles, etc. That's why it fails to build the program.

By the way, since "if cwd is omitted or empty, the program folder will be used as the working directory" (see Launch.json properties ), you don't need to set cwd Properties.

The above is the detailed content of How to create a debug configuration for a specific .go file in VSCode?. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!