закешированный к нам в целях безопасности дебаггер
Go to file
Alessandro Arzilli f3b149bda7 proc: support debugging plugins (#1414)
This change splits the BinaryInfo object into a slice of Image objects
containing information about the base executable and each loaded shared
library (note: go plugins are shared libraries).

Delve backens are supposed to call BinaryInfo.AddImage whenever they
detect that a new shared library has been loaded.

Member fields of BinaryInfo that are used to speed up access to dwarf
(Functions, packageVars, consts, etc...) remain part of BinaryInfo and
are updated to reference the correct image object. This simplifies this
change.

This approach has a few shortcomings:

1. Multiple shared libraries can define functions or globals with the
   same name and we have no way to disambiguate between them.

2. We don't have a way to handle library unloading.

Both of those affect C shared libraries much more than they affect go
plugins. Go plugins can't be unloaded at all and a lot of name
collisions are prevented by import paths.

There's only one problem that is concerning: if two plugins both import
the same package they will end up with multiple definition for the same
function.
For example if two plugins use fmt.Printf the final in-memory image
(and therefore our BinaryInfo object) will end up with two copies of
fmt.Printf at different memory addresses. If a user types
  break fmt.Printf
a breakpoint should be created at *both* locations.
Allowing this is a relatively complex change that should be done in a
different PR than this.

For this reason I consider this approach an acceptable and sustainable
stopgap.

Updates #865
2019-05-08 14:06:38 -07:00
_fixtures proc: Update map reading code for Go 1.12 (#1532) 2019-04-26 10:23:43 -07:00
assets Add high-res images 2015-05-19 12:25:26 -05:00
cmd/dlv cmd/dlv: add Go version check (#1533) 2019-04-26 10:24:21 -07:00
Documentation cmd/dlv: add Go version check (#1533) 2019-04-26 10:24:21 -07:00
pkg proc: support debugging plugins (#1414) 2019-05-08 14:06:38 -07:00
scripts *: Update import name to github.com/go-delve/delve 2019-01-04 19:43:13 +01:00
service proc: support debugging plugins (#1414) 2019-05-08 14:06:38 -07:00
vendor tests: fix typecheckrpc.go and convert it to a test 2019-01-07 11:47:49 -08:00
.gitattributes makefile: use git's $Id$ instead of setting ver.Build in makefile (#807) 2017-04-28 10:14:33 -07:00
.gitignore git: Update gitignore 2015-10-20 20:55:11 -07:00
.travis.yml travis.yml: add 1.12 to test matrix (#1498) 2019-02-26 08:52:13 -08:00
appveyor.yml *: Missed go-delve renames 2019-01-04 11:21:33 -08:00
CHANGELOG.md Set release date for 1.2.0 2019-02-19 11:15:57 -08:00
CONTRIBUTING.md Update CONTRIBUTING.md 2016-05-13 10:43:09 +08:00
glide.lock *: Update vendor 2018-06-22 09:45:10 +02:00
glide.yaml *: Update vendor 2018-06-22 09:45:10 +02:00
go.mod tests: fix typecheckrpc.go and convert it to a test 2019-01-07 11:47:49 -08:00
go.sum tests: fix typecheckrpc.go and convert it to a test 2019-01-07 11:47:49 -08:00
ISSUE_TEMPLATE.md misc: Include issue template for GitHub 2016-03-03 10:40:14 -08:00
LICENSE Add License and README 2014-05-03 15:31:52 -05:00
Makefile Makefile: replace makefile with a script 2018-09-18 12:06:25 -07:00
README.md doc/readme: Fix 'Github' spelling (#1524) 2019-03-26 16:15:18 -07:00

Delve

license GoDoc Build Status Build status Join the chat at https://gitter.im/go-delve/delve

The GitHub issue tracker is for bugs only. Please use the developer mailing list for any feature proposals and discussions.

About Delve

Delve is a debugger for the Go programming language. The goal of the project is to provide a simple, full featured debugging tool for Go. Delve should be easy to invoke and easy to use. Chances are if you're using a debugger, things aren't going your way. With that in mind, Delve should stay out of your way as much as possible.