Commit Graph

1068 Commits

Author SHA1 Message Date
Derek Parker
d5b0210236 *: Remove Godeps 2017-05-27 14:12:31 +02:00
Alessandro Arzilli
cf84483672 proc/variables: bugfix: parsing of maps with zero sized value type (#851)
Buckets of maps with zero sized value types (i.e. map[T]struct{}) have
zero length value arrays.
2017-05-26 11:36:28 -07:00
aarzilli
40b482130a proc/variables: protect form invalid G struct in parseG
A waitreason string that has invalid length (because the G struct is
corrupted or being modified) could cause a crash.
2017-05-25 21:04:09 +02:00
Alessandro Arzilli
5390801904 pkg/proc: remove unused types (#850)
type M struct was never used (as far as I know).
type VariableEval interface was used for a brief period of time during
the refactoring, now both its methods are functions.
2017-05-24 11:27:26 -07:00
Alessandro Arzilli
f4ebfd5101 proc/gdbserial: wait for a connection from stub as long as stub lives (#846)
The authorization prompt on macOS can take a long time to be
acknowledged by the user, we should keep waiting for a connection as
long as the debugserver instance we launched remains alive.
2017-05-22 11:27:54 -07:00
Alessandro Arzilli
354055836a proc: next, stepout should work on recursive goroutines (#831)
Before this commit our temp breakpoints only checked that we would stay
on the same goroutine.
However this isn't enough for recursive functions we must check that we
stay on the same goroutine AND on the same stack frame (or, in the case
of the StepOut breakpoint, the previous stack frame).

This commit:
1. adds a new synthetic variable runtime.frameoff that returns the
   offset of the current frame from the base of the call stack.
   This is similar to runtime.curg
2. Changes the condition used for breakpoints on the lines of the
   current function to check that runtime.frameoff hasn't changed.
3. Changes the condition used for breakpoints on the return address to
   check that runtime.frameoff corresponds to the previous frame in the
   stack.
4. All other temporary breakpoints (the step-into breakpoints and defer
   breakpoints) remain unchanged.

Fixes #828
2017-05-16 11:23:33 -07:00
Alessandro Arzilli
8d3e74a445 proc/gdbserial: fix passing arguments to target via debugserver (#843)
Debugserver does not work as documented, "--" needs to be specified to
pass arguments to the target process (but only if it's an argument that
starts with a dash).

Fixes #839
2017-05-15 10:11:46 -07:00
Alessandro Arzilli
82d142d1cd proc/gdbserial: use reverse connect feature of debugserver (#837)
Fixes #836
2017-05-11 12:34:39 -07:00
Alessandro Arzilli
862145f874 proc: print runtime.curg._panic.arg on unrecovered-panic breakpoint (#833)
You usually want to know the reason for the panic when a panic happens,
it can be printed manually this is a small quality of life improvement.
2017-05-09 10:32:16 -07:00
Alessandro Arzilli
98a4ff7a9f terminal: bugfix: deref of nil SelectedGoroutine switching goroutines (#829)
If CurrentThread isn't running a goroutine SelectedGoroutine can be
nil, do not blindly dereference it.

Fixes #827
2017-05-08 11:16:14 -07:00
Derek Parker
f6091694b6 *: Bump version to 1.0.0-rc.1 2017-05-06 15:38:32 +02:00
Alessandro Arzilli
a843f7944e proc/gdbserial: mozilla rr support (#804)
Implements #727
2017-05-05 15:17:52 -07:00
Alessandro Arzilli
1f1535802e proc/native: Detach should use Kill with child processes we want killed (#822)
While implementing the gdbserial backend everything was changed to call
Detach to "close" a process so that gdbserial could do its clean up in
a single place. However the native implementation of Detach does not
actually kill processes we launched.

Fixes #821
2017-05-05 10:04:32 -07:00
Alessandro Arzilli
f29b9edad2 proc/gdbserial: pass environment variables to target (#820)
debugserver requires a special option to forward the environment to the target.

Fixes #818
2017-05-04 10:46:45 -07:00
Alessandro Arzilli
76ce11cffb proc/gdbserial: disable lldb backend on windows (#819)
Lldb-server does not currently support windows/amd64 (it's in
development). And delve's native backend seems to work well on windows.
Disable the lldb backend on windows for now.

Fixes #817
2017-05-04 10:43:53 -07:00
Alessandro Arzilli
dcf51a5032 proc/native: error when reading/writing memory of exited process (#812)
Fixes #809
2017-05-01 09:57:37 -07:00
Alessandro Arzilli
a731eb661f Minor post-refactoring cleanup (#808)
* proc/native: remove unused utility methods

* proc: turn FindFileLocation, FindFunctionLocation, FirstPCAfterPrologue methods into function
2017-04-28 10:15:39 -07:00
Alessandro Arzilli
24b20099aa makefile: use git's $Id$ instead of setting ver.Build in makefile (#807) 2017-04-28 10:14:33 -07:00
Hyang-Ah Hana Kim
c67986ed7d cmd/dlv: fix race in test (#805)
% go test -race -v -short

=== RUN   TestBuild
==================
WARNING: DATA RACE
Write at 0x00c4201379a0 by goroutine 9:
  os.(*file).close()
      /usr/local/go/src/os/file_unix.go:143 +0x10a
  os.(*File).Close()
      /usr/local/go/src/os/file_unix.go:132 +0x55
  os/exec.(*Cmd).closeDescriptors()
      /usr/local/go/src/os/exec/exec.go:263 +0x67
  os/exec.(*Cmd).Wait()
      /usr/local/go/src/os/exec/exec.go:448 +0x2b8
  github.com/derekparker/delve/cmd/dlv.TestBuild.func1()
      /home/kbuilder/go/src/github.com/derekparker/delve/cmd/dlv/dlv_test.go:82 +0x8e
  github.com/derekparker/delve/cmd/dlv.TestBuild()
      /home/kbuilder/go/src/github.com/derekparker/delve/cmd/dlv/dlv_test.go:104 +0xb6a
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:657 +0x107

Previous read at 0x00c4201379a0 by goroutine 12:
  os.(*File).Read()
      /usr/local/go/src/os/file.go:98 +0x70
  bufio.(*Scanner).Scan()
      /usr/local/go/src/bufio/scan.go:207 +0x539
  github.com/derekparker/delve/cmd/dlv.TestBuild.func2()
      /home/kbuilder/go/src/github.com/derekparker/delve/cmd/dlv/dlv_test.go:93 +0x38

Change-Id: I09d188dbf964fe4af0b33b6a8fcfe51396176b7e
2017-04-26 12:03:26 -07:00
Alessandro Arzilli
d9bd90d7e4 Pull Request #731 but with tests (#802)
* proc/eval: fix length calculation for string concatenation

* proc/variable: find package variables when the package has a path
2017-04-25 10:42:41 -07:00
Alessandro Arzilli
3a86b9fab4 documentation: updated macOS install instructions (#801) 2017-04-24 12:45:37 -07:00
Alessandro Arzilli
d360dae70f proc: fix build on go1.6 (#800)
Fixes #799
2017-04-24 12:44:59 -07:00
Nathan Bruer
43f26fb4d6 pkg/proc: Fixed delve's version extraction to allow propsals (#798)
Go recently introduced proposal tags to their version tags, we
are simply allowing delve to handle it appropriately.

See:
0954fdd51e
2017-04-21 17:45:20 -07:00
aarzilli
b6fe5aebaf proc: refactoring: merge target into proc
- moved target.Interface into proc as proc.Process
- rename proc.IThread to proc.Thread
- replaced interfaces DisassembleInfo, Continuable and
  EvalScopeConvertible with Process.
- removed superfluous Gdbserver prefix from types in the gdbserial
  backend.
- removed superfluous Core prefix from types in the core backend.
2017-04-21 14:00:04 -07:00
aarzilli
15bac71979 proc: refactoring: split backends to separate packages
- move native backend to pkg/proc/native
- move gdbserver backend to pkg/proc/gdbserial
- move core dumps backend to pkg/proc/core
2017-04-21 14:00:04 -07:00
Hana Kim
92dad944d7 service/test: change test package name to service_test
According to https://golang.org/cmd/go/#hdr-Test_packages
service_test is more appropriate becuase this directory contains
no non-test code and the intention is to compile these *_test.go
files as a separate package and link/run with the main test package.
2017-04-19 10:09:36 -07:00
aarzilli
e4b609bf2b terminal: better list command
- always print a header with the path to the file being displayed
- always evaluate the linespec argument, even if a scope prefix is present

Fixes #711, #713
2017-04-19 10:06:43 -07:00
aarzilli
86a59c52a6 terminal: bugfix: tolerate spurious spaces after command prefixes
Expressions such as:

 frame 0    list
 frame   0   list
 on abreakpoint     print x
 goroutine    1    frame     0     list

should all execute correctly

Fixes #712
2017-04-19 09:58:36 -07:00
aarzilli
182f805094 proc: Use MemoryReader inside memoryReadWriter 2017-04-18 13:25:11 -07:00
aarzilli
329bc7e69d dlv_test: fix test on macOS for new Makefile 2017-04-18 13:25:11 -07:00
aarzilli
905d3d9962 debugger: always detach in debugger
GdbserverProcess does its cleanup in Detach we need to always call
that function.
2017-04-18 13:25:11 -07:00
aarzilli
1a0df69cbf proc: added func to threadBlocked 2017-04-18 13:25:11 -07:00
aarzilli
c8d9352522 proc: Implement target.Interface for gdbserver backend 2017-04-18 13:25:11 -07:00
aarzilli
c1879472a1 proc: implement target.Interface for core files 2017-04-18 13:25:11 -07:00
aarzilli
3dacc25d2e proc: refactor Continue to work on any Process implementation 2017-04-18 13:25:11 -07:00
aarzilli
510b7db2a7 proc: introduce IThread interface to abstract threads 2017-04-18 13:25:11 -07:00
aarzilli
97cd3a0afe proc: replaced (*Breakpoint).Clear with (*Thread).ClearBreakpoint 2017-04-18 13:25:11 -07:00
Heschi Kreinick
423bcaa83a pkg/proc: add initial data structures for core support
Core files contain a variety of memory mappings either to files or
anonymous regions stored in the core file. These regions can overlap, so
figuring out what exactly to read can be tricky. This commit contains
a data structure, SplicedMemory, which accumulates mappings and reads
from the correct sources.
2017-04-18 13:25:11 -07:00
Michael Robinson
e7fa14d21d Improve sentence in README.md. (#792) 2017-04-18 10:17:32 -07:00
Hyang-Ah Hana Kim
5bd46f34be vendor: update vendored packages (#791)
* pkg/proc: use golang.org/x/arch/x86/x86asm

instead of rsc.io/x86/x86asm

* pkg/dwarf: migrate to github.com/pkg/profile

from github.com/davecheney/profile

* scripts: keep script go files from being considered for the build

scripts/gen-*.go files are scripts for generating documentation
files and don't follow the typical Go package layout. Expected
usage is like

   go run scripts/gen-cli-docs.go

* vendor: update vendored packages

There were many changes in delve, and go tool chains since last
vendored package update. I just rerun godpes from scratch.

$ rm vendor/*
$ rm Godeps/Godeps.json
$ go list ./... | grep -v /vendor/ | grep -v /scripts/ | go get -u -t
$ go get -u github.com/mattn/go-colorable
$ go get -u github.com/mattn/go-isatty
$ go list ./... | grep -v /vendor/ | grep -v /scripts/ | godeps save
2017-04-17 14:13:00 -07:00
Alessandro Arzilli
b5a06f7aa8 proc refactoring: make stack, disassemble and eval independent of proc.Process (#786)
* proc: Refactor stackIterator to use memoryReadWriter and BinaryInfo

* proc: refactor EvalScope to use memoryReadWriter and BinaryInfo

* proc: refactor Disassemble to use memoryReadWriter and BinaryInfo
2017-04-13 16:19:57 -07:00
Derek Parker
f605716160 Bump to version v0.12.2 (#788) 2017-04-13 19:28:24 +02:00
Derek Parker
01a1b35620 cmd/dlv: Use Printf over Println
Fixes #783
2017-04-06 15:32:44 -07:00
Alessandro Arzilli
436a3c2149 proc refactor: split out BinaryInfo implementation (#745)
* proc: refactor BinaryInfo part of proc.Process to own type

The data structures and associated code used by proc.Process
to implement target.BinaryInfo will also be useful to support a
backend for examining core dumps, split this part of proc.Process
to a different type.

* proc: compile support for all executable formats unconditionally

So far we only compiled in support for loading the executable format
supported by the host operating system.
Once support for core files is introduced it is however useful to
support loading in all executable formats, there is no reason why it
shouldn't be possible to examine a linux coredump on windows, or
viceversa.

* proc: bugfix: do not resume threads on detach if killing

* Replace BinaryInfo interface with BinInfo() method returning proc.BinaryInfo
2017-04-06 11:14:01 -07:00
Alessandro Arzilli
7b19fe9e69 proc: add test for attach/detach, fix detach (#773)
Detach did not work for processes we attach to via PID.

Linux: we were only detaching from the main thread, all threads are
detached independently

Windows: we must resume all threads before detaching.

macOS: still broken.

Updates #772
2017-03-28 09:30:27 -07:00
Alessandro Arzilli
ecc2eb6da6 documentation: add gdlv to list of alternative UIs (#774) 2017-03-24 16:10:01 -07:00
Justin Clift
43aa55dee3 Add an entry for Gogland (#775) 2017-03-24 16:07:50 -07:00
Zhou Tao
28a0e5bd63 terminal: trim space in interactive console (#770)
When running interactive command in gdb, it will remove beginning space,
so do the same for dlv, which will be more convient for user
2017-03-21 14:41:02 -07:00
Hyang-Ah Hana Kim
ab7367ed2b Minor fixes to make some tests build and run (#752)
* cmd/dlv: fall back to go env GOPATH when GOPATH envvar is unset.

Since Go 1.8, GOPATH environment variable has a default value if the
environment variable is unset so not setting GOPATH is perfectly ok.
Depend on `go env` command to query Go related environment variable.

* build: update references to moved packages
2017-03-13 10:59:34 -07:00
Justin Clift
a8d11f02a8 Bash script to generate & install signing certificate for delve (#760) 2017-03-13 10:59:10 -07:00