закешированный к нам в целях безопасности дебаггер
Go to file
Alessandro Arzilli 1b0c4310c4
proc: give unique addresses to registerized variables (#2527)
We told clients that further loading of variables can be done by
specifying a type cast using the address of a variable that we
returned.
This does not work for registerized variables (or, in general,
variables that have a complex location expression) because we don't
give them unique addresses and we throw away the compositeMemory object
we made to read them.

This commit changes proc so that:

1. variables with location expression divided in pieces do get a unique
   memory address
2. the compositeMemory object is saved somewhere
3. when an integer is cast back into a pointer type we look through our
   saved compositeMemory objects to see if there is one that covers the
   specified address and use it.

The unique memory addresses we generate have the MSB set to 1, as
specified by the Intel 86x64 manual addresses in this form are reserved
for kernel memory (which we can not read anyway) so we are guaranteed
to never generate a fake memory address that overlaps a real memory
address of the application.

The unfortunate side effect of this is that it will break clients that
do not deserialize the address to a 64bit integer. This practice is
contrary to how we defined our types and contrary to the specification
of the JSON format, as of json.org, however it is also fairly common,
due to javascript itself having only 53bit integers.

We could come up with a new mechanism but then even more old clients
would have to be changed.
2021-07-02 18:37:55 +02:00
_fixtures proc: give unique addresses to registerized variables (#2527) 2021-07-02 18:37:55 +02:00
_scripts _scripts: change gen-backend_test_health.go to be more stable (#2505) 2021-05-25 10:49:46 -07:00
.teamcity TeamCity: add mac/arm64 build and use DelveBot account (#2368) 2021-03-04 18:38:56 +01:00
assets Add high-res images 2015-05-19 12:25:26 -05:00
cmd/dlv terminal,service: Add filtering and grouping to goroutines command (#2504) 2021-07-01 11:25:33 -07:00
Documentation terminal,service: Add filtering and grouping to goroutines command (#2504) 2021-07-01 11:25:33 -07:00
pkg proc: give unique addresses to registerized variables (#2527) 2021-07-02 18:37:55 +02:00
service proc: give unique addresses to registerized variables (#2527) 2021-07-02 18:37:55 +02:00
vendor go.mod: update google/go-dap to 0.5.0 (#2460) 2021-05-04 12:33:50 -07:00
.cirrus.yml *: Update freebsd image 2020-04-08 11:40:24 +02:00
.deepsource.toml Continuous Integration cleanup (#2369) 2021-03-08 09:35:56 -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 *: Add .vscode to .gitignore (#2554) 2021-06-26 09:16:35 +02:00
CHANGELOG.md all: v1.6.1 2021-05-19 09:24:05 +02:00
CONTRIBUTING.md README: Remove gitter chat link. 2020-01-21 09:06:53 -08:00
go.mod go.mod: update google/go-dap to 0.5.0 (#2460) 2021-05-04 12:33:50 -07:00
go.sum go.mod: update google/go-dap to 0.5.0 (#2460) 2021-05-04 12:33:50 -07: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 *: mv scripts _scripts 2020-03-28 20:28:51 +01:00
README.md Change TeamCity test matrix and drop appveyor/travis-ci configurations (#2315) 2021-01-25 20:48:27 -08:00

Delve

license GoDoc Build Status

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.