README.md 1.9 KB
Newer Older
D
Derek Parker 已提交
1
# Delve
D
Derek Parker 已提交
2

D
Derek Parker 已提交
3
### What is Delve?
D
Derek Parker 已提交
4

D
Derek Parker 已提交
5
Delve is a Go debugger, written in Go.
D
Derek Parker 已提交
6

D
Derek Parker 已提交
7 8
### Building

D
Derek Parker 已提交
9
Currently, Delve requires the following [patch](https://codereview.appspot.com/117280043/), however this change is vendored until Go 1.4 lands, so the project is go get-able.
D
Derek Parker 已提交
10

11 12 13 14
```
go get github.com/derekparker/delve/cmd/dlv
```

15 16
You will need readline installed on your system. With apt simply: `sudo apt-get install libreadline-dev` .

D
Derek Parker 已提交
17 18
### Features

D
Derek Parker 已提交
19 20
* Attach to an already running process
* Launch a process and begin debug session
D
Derek Parker 已提交
21
* Set breakpoints, single step, step over functions, print variable contents, print thread and goroutine information
D
Derek Parker 已提交
22 23 24

### Usage

25 26
The debugger can be launched in three ways:

D
Derek Parker 已提交
27
* Compile, run, and attach in one step:
28 29

	```
30
	$ dlv -run
31
	```
D
Derek Parker 已提交
32 33

* Provide the name of the program you want to debug, and the debugger will launch it for you.
D
Derek Parker 已提交
34

D
Derek Parker 已提交
35
	```
36
	$ dlv path/to/program
D
Derek Parker 已提交
37
	```
D
Derek Parker 已提交
38 39 40

* Provide the pid of a currently running process, and the debugger will attach and begin the session.

D
Derek Parker 已提交
41
	```
42
	$ sudo dlv -pid 44839
D
Derek Parker 已提交
43
	```
D
Derek Parker 已提交
44

D
Derek Parker 已提交
45 46 47 48 49 50
### Breakpoints

Delve can insert breakpoints via the `breakpoint` command once inside a debug session, however for ease of debugging, you can also call `runtime.Breakpoint()` and Delve will handle the breakpoint and stop the program at the next source line.

### Commands

D
Derek Parker 已提交
51 52
Once inside a debugging session, the following commands may be used:

D
Derek Parker 已提交
53
* `break` - Set break point at the entry point of a function, or at a specific file/line. Example: `break foo.go:13`.
D
Derek Parker 已提交
54

J
Jack Christensen 已提交
55 56
* `continue` - Run until breakpoint or program termination.

D
Derek Parker 已提交
57
* `step` - Single step through program.
D
Derek Parker 已提交
58

D
Derek Parker 已提交
59
* `next` - Step over to next source line.
D
Derek Parker 已提交
60

D
Derek Parker 已提交
61
* `threads` - Print status of all traced threads.
D
Derek Parker 已提交
62 63 64

* `goroutines` - Print status of all goroutines.

D
Derek Parker 已提交
65 66
* `print $var` - Evaluate a variable.

M
Matt Self 已提交
67 68 69
* `exit` - Exit the debugger.


D
Derek Parker 已提交
70 71 72
### Upcoming features

* In-scope variable setting
D
Derek Parker 已提交
73
* Support for OS X
D
Derek Parker 已提交
74
* Editor integration
D
Derek Parker 已提交
75 76

### License
D
Derek Parker 已提交
77 78

MIT