Commit Graph

257 Commits

Author SHA1 Message Date
aarzilli
9cbe768836 proc: Renamed temp breakpoints to internal breakpoints 2016-09-30 08:35:29 +02:00
aarzilli
7c49d4968d proc: Implement Step using Continue
Instead of repeatedly calling StepInstruction set breakpoints to the
destination of CALL instructions (or on the CALL instructions
themselves for indirect CALLs), then call Continue.
Calls to unexported runtime functions are skipped.
Reduces the number of code paths managing inferior state from 3 to 2
(StepInstruction, Continue).

Fixes #561
2016-09-27 09:37:33 +02:00
aarzilli
8d58262020 proc: bugfix: Next and normal calls to deferred function
When a deferred function is called directly Next and StepOut should not
step into it.

Fixes #582
2016-09-27 09:37:26 +02:00
Alessandro Arzilli
fb8388ab2e proc/variables: missing return statement on error (#643)
Fixes #642
2016-09-25 08:28:22 -07:00
Alex Brainman
4d8daeb1a8 proc: implement detach on windows (#615) 2016-09-12 11:16:41 -07:00
Alessandro Arzilli
e4c7df1469 Fix prologue detection on testvariables2.go's main.main (#625) 2016-09-06 10:27:07 -07:00
Alex Brainman
f09ef23f9e proc: implement attach on windows
Updates #363
2016-08-12 12:30:01 +10:00
guo
c3ade94b86 proc: fix could not read process comm name error
fix #531
2016-08-05 13:14:46 +08:00
dr2chase
218c2b953b proc: Fix stepping into runtime.duff* (#575)
Detect calls that do not target a function's entrypoint
(i.e, calls to runtime.duffzero and runtime.duffcopy) and
instead step into them directly.  StepInto sets a breakpoint
past the called function's prologue and expects that continue
will hit that breakpoint, but because the call is into the
interior of the function (well past the prologue) this fails.

Fixes #573
2016-07-21 13:10:35 -07:00
Alessandro Arzilli
16f16cf86d proc: bugfix: cleaning up spurious process exited errors (#599)
Fixes flakiness of TestCmdLineArgs.
2016-07-20 15:36:31 -07:00
Nan Xiao
bfc280f48f Fix typo in proc/arch.go. 2016-07-08 13:57:40 +08:00
Alessandro Arzilli
372869c9e1 proc: Back to using vendored golang.org/x/debug/ (#585)
Patch https://go-review.googlesource.com/23085 has been merged so we
can go back to using golang.org/x/debug/.
2016-07-05 11:58:11 -07:00
aarzilli
da910cc3bd proc: disabled TestUnsupportedArch on go1.7
See: https://github.com/golang/go/issues/16180
2016-07-03 09:02:21 +02:00
aarzilli
51c39ed171 proc: detect when Launching non-executable files
This provides a better error message when the user tries to run dlv
debug on a directory that does not contain a main package, when `dlv
exec` is used with a source file.

Additionally the architecture of the executable is checked as suggested
by @alexbrainman in #443.

Fixes #509
2016-06-30 09:39:18 +02:00
aarzilli
5714aa548c proc: cleanup: attach FDE to Stackframe structure 2016-06-24 21:22:30 +02:00
aarzilli
9d70adf5c9 proc: Removed setChanRecvBreakpoints
This function was broken for a very long time until the changes in this
PR fixed it. However I do not think it is desirable to be catapulted
into some other goroutine by 'next' just because that other goroutine
happened to receive a message on a channel.

This feature should be implemented by a new command, not next.
2016-06-24 21:22:30 +02:00
aarzilli
80952e14d4 proc, terminal: step-instruction on parked goroutines 2016-06-24 21:22:30 +02:00
aarzilli
6faa78ff7c proc, terminal: step on parked goroutines
Previously Step would step through the goroutine associated with
CurrentThread if SelectedGoroutine was parked
2016-06-24 21:22:30 +02:00
aarzilli
d17c7c3a61 proc, terminal: next on parked goroutines
Previously Next would step through the goroutine associated with
CurrentThread if SelectedGoroutine was parked

Also fixes a bug with proc.(*Process).StepInto where StepInto could
switch to a different goroutine.
2016-06-24 21:22:30 +02:00
aarzilli
323c0450d1 tests: fixed version check for go1.7 to include beta versions 2016-06-22 12:38:40 +02:00
Alessandro Arzilli
7761faad5b terminal: show current thread of goroutines (#564) 2016-06-20 10:20:44 -07:00
David Benque
ede880134c Add support for Appengine; parsing Appengine Go custom version (#566) 2016-06-07 11:07:37 -07:00
Derek Parker
0fded288b5 all: Fix typos 2016-05-29 22:13:52 +02:00
Alessandro Arzilli
9bc6ad4f46 Go 1.7 compatibility (#524)
* tests: update to cope with go1.7 SSA compiler

* de-vendored golang.org/x/debug/dwarf

We need our own tweaked version

* dwarf/debug/dwarf: always use the entry's name attribute

Using the name attribute leads to better type names as well as fixes
inconsistencies between 1.5, 1.6 and 1.7.

* proc: Updated loadInterface to work with go1.7

go1.7 changed the internal representation of types, removing the string
field from runtime._type.
Updated loadInterface to use the new str field.
2016-05-29 12:20:09 -07:00
Alessandro Arzilli
5933a0f48f proc: bugfix: unsigned integer overflow in proc.(*memCache).contains (#555)
Fixes #554
2016-05-29 12:11:00 -07:00
Nan Xiao
b9b3e4ac03 proc: Update stack.go (#527)
Fix typo.
2016-05-13 11:28:56 -07:00
Alessandro Arzilli
c4e01da5ca terminal,service: auto-continue during next and step (#448)
* proc: bugfix: StepInto can not function when temp bps exist

* terminal,service: auto-continue during next and step

Make dlv call continue automatically when a breakpoint is hit on a
different goroutine during a next or step operation.
Added API hooks to implement the other solution to this problem (cancel
the next/step operation if a different breakpoint is hit).

Fixes #387
2016-04-24 16:20:02 -07:00
Alessandro Arzilli
a7a0cc75e1 proc: allow use of quoted type names in type casts (#434)
If we are unable to correctly guess how a type is serialized in
debug_info let the user specify it directly.

Workaround for #455
2016-04-24 16:14:42 -07:00
Alessandro Arzilli
473b66387c proc: Improvements to Variable printing (#444)
* service/api: Removed unused fields of service/api.Function

* proc/eval: Set return variable name to input expression

* all: fine-grained control of loadValue for better variable printing

Makes proc.(*Variable).loadValue loading parameters configurable
through one extra argument of type LoadConfig.
This interface is also exposed through the API so clients can control
how much of a variable delve should read.
2016-04-24 10:15:39 -07:00
Matias Lahti
60946a759c proc: Fix command-line arguments on Windows (#501)
* proc: add tests for command-line arguments

adds tests to make sure command-line arguments are passed to Launch() properly

* proc_windows: pass command-line arguments to CreateProcess()

build command-line arguments according to how the standard library does it and pass the command line along to the actual syscall on Windows.

see discussion in #479

* proc: better testing of cmd-line arguments

* proc_windows: fix a possible error-case with passing just 1 argument

previously, the command line pointer passed to sys.CreateProcess was empty, if we had 0 parameters (len(cmd) == 1, as cmd[0] is the executable, so no cmdlineGo would be created, while with any argument it would as len(cmd) > 1). This might cause problems down the road, so make sure we include the command line every time, even if it seems to work without.

* proc: improve testing of command-line arguments

test that arguments with spaces are passed on correctly and DRY failure/success condition checking in the args test
2016-04-21 14:20:38 -07:00
Derek Parker
f37a26d525 proc: Use correct type for mach task 2016-04-12 22:53:13 -07:00
Derek Parker
4fd02c829a proc: Set close-on-exec flag on fork pipes 2016-04-12 22:33:20 -07:00
aarzilli
53af850bdc proc: Never return a stack trace of zero frames
proc.(*Thread).Scope fails if we can find a FDE but PCToLine returns
nothing
2016-03-28 09:01:16 -07:00
aarzilli
0f4b7ce8c7 proc: add runtime.mcall to top of stack function 2016-03-28 09:01:16 -07:00
aarzilli
497b526194 proc: stacktrace refactoring
- made GoroutineStacktrace a method of struct G
- made stacktrace a method of StackIterator
- renamed StackIterator to stackIterator
- factored out logic to obtain a stackIterator from a goroutine that's
used by both (*G).Stacktrace and by (*G).UserCurrent
2016-03-28 09:01:16 -07:00
aarzilli
43756cd864 proc: bugfix: Truncate stacktrace when FDE of a frame can not be found
Instead of returning an error when FDE of a frame can not be found,
just truncate the stack trace.

Fixes #462
2016-03-28 09:01:16 -07:00
aarzilli
d735d1824c proc: removed dead code from proc.(*Variable).parseG 2016-03-23 13:45:57 +01:00
Hubert Krauze
37f124817d dlv: Misc refactors 2016-03-17 15:32:30 -07:00
Derek Parker
e88ea83e1d proc: TODO trace stop status on kernel versions 2016-03-14 09:43:55 -07:00
Derek Parker
82e3939cf9 proc: whitespace/import cleanup 2016-03-14 09:40:24 -07:00
Joe Grasse
59ef8a7a71 proc: Add process state T
On linux kernel 2.6.x, the Trace/Stop status is 'T'

Fixes #209
2016-03-14 09:39:39 -07:00
aarzilli
c4797ea445 proc: Breakpoint to catch unrecovered panics
Automatically sets a breakpoint on runtime.startpanic, the function
that gets called by runtime.dopanic when a panic is not recovered.

Implements #317
2016-03-09 14:15:30 +01:00
aarzilli
c66c6408a5 proc: Caching type offsets
Caches the mapping of type names to offset in debug_info to speed up
variable evaluation.

BEFORE:
	BenchmarkArray-4         	     100	  13'238'441 ns/op	   0.62 MB/s
	BenchmarkArrayPointer-4  	     200	  10'044'093 ns/op	   0.87 MB/s
	BenchmarkMap-4           	    1000	   1'332'530 ns/op	   0.77 MB/s
	BenchmarkGoroutinesInfo-4	      10	 114'677'462 ns/op
	BenchmarkLocalVariables-4	    2000	   1'223'975 ns/op
AFTER:
	BenchmarkArray-4         	     200	   9'925'686 ns/op	   0.83 MB/s
	BenchmarkArrayPointer-4  	     100	  11'143'930 ns/op	   0.78 MB/s
	BenchmarkMap-4           	    2000	   1'302'520 ns/op	   0.79 MB/s
	BenchmarkGoroutinesInfo-4	      30	  35'079'549 ns/op
	BenchmarkLocalVariables-4	    1000	   1'137'299 ns/op

Note in particular the speedup of BenchmarkGoroutinesInfo, since
proc.(*Variable).parseG is a function we call a lot.
2016-03-05 13:04:11 +01:00
aarzilli
49a0a121e0 tests: Add test for #149, fixed TestNextGeneral on tip
The go compiler changed and break statements no longer get compiled to
nothing when -N is passed:

https://go-review.googlesource.com/#/c/19848/
https://go-review.googlesource.com/#/c/19854/
2016-02-28 16:44:22 -08:00
aarzilli
c8f4cee97d New command 'types'
Lists all the types defined in the debugged program.
2016-02-27 15:39:11 -08:00
aarzilli
14a92352bc proc: Add filter for non-variable global symbols to PackageVariables 2016-02-27 15:26:24 -08:00
aarzilli
58913527db proc: Crash when stepping past the end of the program
Fixes #414
2016-02-27 15:15:51 -08:00
aarzilli
037926015a proc: bugfix: propagate signals we don't handle to inferior
Fixes #419 (partial)
2016-02-24 17:49:30 -08:00
Alex Brainman
8d4d0871cf proc: replace cgo with syscalls on windows
Unrelated to conversion, I have also changed (*Thread).readMemory
to return only first count bytes of memory just as advised
by ReadProcessMemory.

Fixes #409
Fixes #412
Fixes #416
2016-02-19 15:55:20 +11:00
aarzilli
6242c4388e _fixtures: Removed testvariables2 and testvariables4
Moved the code in testvariables2 and testvariables4 into
testvariables3, renamed testvariables3 into testvariables2
2016-02-18 12:16:31 -08:00