Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lloiser/go-debug
🐛 A go debugger for atom using delve.
https://github.com/lloiser/go-debug
atom debug debugger delve go golang
Last synced: 6 days ago
JSON representation
🐛 A go debugger for atom using delve.
- Host: GitHub
- URL: https://github.com/lloiser/go-debug
- Owner: lloiser
- License: mit
- Created: 2016-01-15T23:07:46.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2020-05-11T17:18:05.000Z (over 4 years ago)
- Last Synced: 2024-08-07T18:33:15.445Z (5 months ago)
- Topics: atom, debug, debugger, delve, go, golang
- Language: JavaScript
- Homepage: https://atom.io/packages/go-debug
- Size: 1.21 MB
- Stars: 388
- Watchers: 8
- Forks: 21
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# [go-debug](https://atom.io/packages/go-debug)
A go debugger for atom using [delve](https://github.com/derekparker/delve).
![Demo](https://raw.githubusercontent.com/lloiser/go-debug/master/resources/demo.gif)
## Install
Either `apm install go-debug` or search for `go-debug` in the settings.
### Install delve
`go-debug` tries to install/download delve automatically.
If this fails you can still do it manually by using this guide: https://github.com/derekparker/delve/tree/master/Documentation/installation
## Usage
Use F5 to launch the debug window (the one on the right).
At selected line press F9 to set (or toggle) break point.
other [function keys](#key-bindings).## Configuration
`go-debug` has two built-in configurations. Both work on the file/package that is currently open in atom.
* `Debug`: compile and debug the current package
* `Test`: compile and debug the tests of the current packageIt's possible to create additional configurations by creating a file and setting the path in the `go-debug` setting `Configuration File`. You can even specify multiple configurations by separating the paths in this setting with commas. Relative paths will be resolved relative to the current project.
Such a configuration file looks like:
```js
{
"configurations": [
{ /* a configuration */ },
{ /* another configuration */ },
// ...
]
}
```Each configuration supports the following options:
```js
{
// "name" is the display name in the panel (REQUIRED)
"name": "...",// "mode" determines how to start / connect to delve (REQUIRED)
// * debug is used to debug a package
// * test debugs the tests of the package
// * remote connects to an already running headless delve session on a remote server (see "host" and "port" below)
// * exec debugs a precompiled executable (see "program" below)
"mode": "debug" | "test" | "remote" | "exec",// used to pass arguments to the executed package / tests (e.g. "-v").
"args": ["..."],// use this if you have to specify additional environment variables.
"env": { "": "" },// "cwd" specifies the current working directory where delve starts from.
// This is useful if you always want to debug/test a specific package (e.g. the "main" package) but are currently working on another package
"cwd": "",// "host" and "port" are used to modify the default port of the locally running delve server.
// If "mode" is "remote" then these define the host and port of the server where a "headless" delve is running.
"host": "localhost",
"port": 2345,// "program" contains the path to a precompiled executable that should be debugged.
// (useful if you have a custom build chain like gb)
"program": "",// pass additional build flags when delve compiles the package/tests.
"buildFlags": "",// a path to the "init" file that will be executed once delve has started.
"init": "",// turns on/off (default) the "verbose" logging for delve (useful if you encounter problems with delve or go-debug).
"showLog": true | false
}
```All string options can make use of the following variables by using `${...}` somewhere inside the string:
```js
{
// the working directory on startup of atom
cwd: "...",
// the open file (full path)
file: "...",
// the open file's basename
fileBasename: "...",
// the open file's dirname
fileDirname: "...",
// the open file's extension
fileExtname: "...",
// the open file relative to the "workspaceRoot" variable
relativeFile: "...",
// the full path of the project root folder
workspaceRoot: "...",
// this contains all environment variables known to atom including the "env" variables from above.
// They can be used like so "${env.GOPATH}/src/..."
env: { "": "" }
}
```_Note: `go-debug` also supports the configuration for vscode which are stored in `.vscode/launch.json`. But be aware that not all configurations might work!_
### Examples
Always debug the `cmd` of your program wherever you are right now in your code and add some arguments and environment variables:
```js
{
"name": "Debug cmd",
"mode": "debug",
"cwd": "${workspaceRoot}/cmd",
"args": ["--connection=sql"],
"env": {
"USER": "ROOT",
"PW": "SECRET!"
}
}
```Start tests with verbose flag:
```js
{
"name": "Verbose Test",
"mode": "test",
"args": ["-test.v"]
}
```## Key bindings
* `f5` starts the current selected configuration
* `shift-f5` restarts the current delve session (`r / restart`)
* `f6` stops delve (`exit / quit / q`)
* `f8` continue the execution (`c / continue`)
* `f9` toggle breakpoint
* `f10` step over to next source line (`n / next`)
* `f11` step into functions (`s / step`)
* `shift-f11` step out of functions (`stepOut`)
* `cmd-k cmd-g` (mac) / `ctrl-k ctrl-g` (others) toggles the main panel## Links
* Gopher community on slack: [![Slack](https://img.shields.io/badge/gophers_slack-%23go--plus-blue.svg?style=flat)](https://gophersinvite.herokuapp.com)
Questions? Use the `go-plus` channel or send me direct messages