Commit Graph

1955 Commits

Author SHA1 Message Date
Alessandro Arzilli
a72723433b
proc: better support for C pointers (#1997)
- treat C pointers as arrays
- print 'char *' variables as strings
2020-06-05 11:22:40 -07:00
Álex Sáez
95e7cafd0c
terminal/command: Add 'reload' command (#1971)
* terminal/command: Add 'reload' command

These changes add the 'reload' command, which allows us to rebuild the project
and start the debugging session again. Currently, if the project's code is
updated while debugging it, Delve shows the new source code, but it's still
running the old one. With 'reload', the whole binary is rebuilt, and the
process starts again.

Fixes #1551

* Remove unnecessary print

Changes to be committed:
      modified:   pkg/terminal/command.go

* Add tests and refactor the code

Changes to be committed:
      modified:   cmd/dlv/cmds/commands.go
      modified:   go.mod
      modified:   pkg/terminal/command.go
      modified:   service/config.go
      modified:   service/debugger/debugger.go
      modified:   service/test/integration2_test.go

* Fix typo in the comment

Changes to be committed:
      modified:   service/debugger/debugger.go

* Fix typo in the name of the variables

The variables are local therefore the capitalization is not needed

Changes to be committed:
      modified:   cmd/dlv/cmds/commands.go

* Call GoTestBuild

Also, remove the := to avoid redeclaration

* Change the Kind in the tests

Change from debugger.ExecutingGeneratedTest to
debugger.ExecutingGeneratedFile for consistency.
We are generating a real binary instead of a test
one so ExecutingGeneratedFile makes more sense here.

Changes to be committed:
      modified:   service/test/integration2_test.go

* Avoid breakpoints based on addresses

Changes to be committed:
      modified:   service/debugger/debugger.go

* Update the rebuild behaviour

There are a few cases where we can't rebuild the binary because we don't
know how it was build.

Changes to be committed:
      modified:   service/debugger/debugger.go

* Fix typos and update documentation

Changes to be committed:
      modified:   Documentation/cli/README.md
      modified:   pkg/terminal/command.go
      modified:   service/config.go
      modified:   service/debugger/debugger.go

* Fix typo

* Remove variables

They were added to the debugger.Config

* Rename variable

Rename Kind to ExecuteKind to make it more accurate

Changes to be committed:
      modified:   cmd/dlv/cmds/commands.go
      modified:   service/debugger/debugger.go
      modified:   service/test/integration2_test.go
2020-06-05 11:03:09 -07:00
Alessandro Arzilli
292f5c69f0
proc: step into unexported runtime funcs when already inside runtime (#2061)
Normally we don't step into unexported runtime functions because the
compiler is free to insert them into the code and they are not relevant
to the user, however if we are already stepping through a runtime
function we should let step into work normally and step into other
runtime functions.
2020-06-05 10:29:28 -07:00
Alessandro Arzilli
80b5b95182
proc/*: move Set/Clear Breakpoint methods to Target (#2064) 2020-06-03 11:14:14 -07:00
Alessandro Arzilli
2d6bc19ad7
service/api: do not try to convert unreadable goroutines (#2070)
When reading truncated core files GoroutinesInfo will sometimes produce
some proc.G structs with only the Unreadable field set. These proc.G
can not be used for anything, but the service layer will still try to
convert them.
Since they are not fully initialized parts of the conversion will fail,
api.ConvertGoroutine should not try to call methods of unreadable
goroutines.

Fixes a bug reported on the mailing list.
https://groups.google.com/forum/#!msg/delve-dev/gauDqYaD81c/K5YDNBOhAAAJ
2020-06-03 11:10:14 -07:00
Alessandro Arzilli
fecf14bd19
terminal: fix nil pointer dereference when printing tracepoints (#2071)
This issue causes a failure of TestTracePid that was observed in CI:

https://travis-ci.com/github/go-delve/delve/jobs/343053383

I'm not sure what causes it in this particular instance but there are
several ways in which a thread stopped at a breakpoint might have a
BreakpointInfo == nil field (see variable withBreakpointInfo in
debugger.Debugger.Command).
2020-06-03 10:54:07 -07:00
chainhelen
04a0891913
cmd/dlv: do not ignore regex when tracing pid (#2069)
The trace command line subcommand ignored the regexp argument
when the traced process was specified using the '-p' option.

Fixes #2023
2020-06-02 12:07:03 -07:00
polinasok
4be75bec59
service/dap: Add buildFlags error checking and tests in launch requests (#2056)
* service/dap: Add error checking and tests for buildFlags in launch requests

* Clarify with comments and better naming

* Undo redundant support.go changes

* Undo redundant support.go changes (attempt #2)

Co-authored-by: Polina Sokolova <polinasok@users.noreply.github.com>
2020-05-28 14:01:51 -07:00
Derek Parker
4a9b3419d1
*: v1.4.1 (#2059) 2020-05-22 20:09:01 +02:00
chainhelen
237c5026f4
doc/readme: Remove the Build Status of appveyor (#2055)
update #1919
2020-05-18 09:36:42 -07:00
Alessandro Arzilli
9881edaa99
vendor: remove github.com/pkg/profile dependency (#2053)
It is only used in benchmarks and 'go test' now has command line
options to enable profiling as appropriate (but maybe it didn't in
2014).
2020-05-14 10:16:09 -07:00
chainhelen
e28e3d30d2
[WIP] pkg/proc: avoid target process leaks. (#2018)
* pkg/proc: avoid target process leaks.

Target process should exit when dlv launch failed.

Fix #2017.
2020-05-14 14:23:16 +02:00
Alessandro Arzilli
200994bc8f
proc/*: only load floating point registers when needed (#1981)
Changes implementations of proc.Registers interface and the
op.DwarfRegisters struct so that floating point registers can be loaded
only when they are needed.
Removes the floatingPoint parameter from proc.Thread.Registers.
This accomplishes three things:

1. it simplifies the proc.Thread.Registers interface
2. it makes it impossible to accidentally create a broken set of saved
   registers or of op.DwarfRegisters by accidentally calling
   Registers(false)
3. it improves general performance of Delve by avoiding to load
   floating point registers as much as possible

Floating point registers are loaded under two circumstances:

1. When the Slice method is called with floatingPoint == true
2. When the Copy method is called

Benchmark before:

BenchmarkConditionalBreakpoints-4   	       1	4327350142 ns/op

Benchmark after:

BenchmarkConditionalBreakpoints-4   	       1	3852642917 ns/op

Updates #1549
2020-05-13 11:56:50 -07:00
Derek Parker
f96663a243
cmd/dlv: Fix trace output (#2038)
* cmd/dlv,debugger: Improve dlv trace and trace command output

This patch improves the `dlv trace` subcommand output by reducing the
noise that is generated and providing clearer more concise information.

Also adds new tests closing a gap in our testing (we previously never
really tested this subcommand).

This patch also fixes the `dlv trace` REPL command to behave like the
subcommand in certain situations. If the tracepoint is for a function,
we now show function arguements and return values properly.

Also makes the overall output of the trace subcommand clearer.

Fixes #2027
2020-05-13 08:38:10 +02:00
Alessandro Arzilli
a33be4466f
vendor: update logrus dependency (#2048)
Fixes #2037
2020-05-11 15:44:01 -07:00
polinasok
f92afb9c17
service/dap: Adds launch request support for program args (#2040)
* Adds launch request support for program args

* Combine types of function parameters

Co-authored-by: Polina Sokolova <polinasok@users.noreply.github.com>
2020-05-11 09:52:26 -07:00
Anders Kaare
71a460fc0f
config: add option for printfile() line count (#2043)
The option is "source-list-line-count". It defaults to 5, which was previously
hardcoded in printfile(), but now you can change it dynamically, for instance:

 $ config source-list-line-count 20
 $ list
2020-05-11 09:50:25 -07:00
Alessandro Arzilli
f559c3c421
gobuild: pass-through stdout to 'go' command invocation (#2044)
When trying to compile tests in a package that does not contain tests
'go' emits an error message on stdout instead of stderr. Let the 'go'
command write to stdout too.

Fixes #2042
2020-05-11 09:44:25 -07:00
Alessandro Arzilli
0f83fa66f5
cmd/dlv: make core command limitations more prominent (#2031)
Fixes #2026
2020-05-04 10:00:33 -07:00
chainhelen
5b7d764b15
gdbserial/gdbserver: optimize the search of debugserver binary (#2005)
Unexport `GetDebugServerAbsolutePath` and avoid unnecessary repeated calls.
Remove `os.Stat` because `Exec.LookPath` has already used `os.Stat`.And Fix
some comments.
2020-05-04 09:59:34 -07:00
colinnewell
99a0468b9b
cmd,Documentation: Add some simple examples for the list command to the help (#2034) 2020-05-04 09:27:55 -07:00
polinasok
2f295f310d
service/dap: Add error handlers for unsupported and not-yet-supported requests (#1918)
* Add no-op handlers for unsupported requests

* Fix whitespace

* Add couple of missing unsupported requests

* More comments

* Separate errors for unsupported and not-yet-implemented requests.

* Fix go.mod/sum dependencies

Co-authored-by: Polina Sokolova <polinasok@users.noreply.github.com>
2020-05-01 12:24:44 -07:00
aarzilli
8f5df19948 proc: fix findCompileUnitForOffset when plugins are used
Splits the compileUnits slice between images so that we can search for
an offset inside the debug info of a specific image file.
2020-05-01 11:51:34 -07:00
aarzilli
96890bbe1e dwarf/op: return register values when they are the only piece
When there is a single piece and it's a register value just return it.
This is important for clang compiled programs which will use DW_OP_regN
to specify the value of the frame base.
2020-05-01 11:11:51 -07:00
aarzilli
c078223d56 proc: use cached packageVars in proc.(*EvalScope).PackageVariables 2020-05-01 11:01:35 -07:00
aarzilli
cf37512aed proc: move g.stackhi/g.stacklo to a struct
Mirroring the way this is implemented in the Go runtime and introducing
a type that will be useful to support the call injection changes in Go
1.15
2020-05-01 10:44:06 -07:00
aarzilli
bb2525a7d5 proc: keep debugger state consistent if callInjectionProtocol fails
pickCurrentThread should always run.
2020-05-01 10:15:29 -07:00
aarzilli
6102c31d6d terminal: clarify Ctrl-C options with multiclient servers
Fixes #2028
2020-04-27 09:15:44 -07:00
Min Zhou
3e04ad0fad proc: Find executable should follow symbol links.
On linux platform, we simply treated `/proc/$pid/exe` as the
executable of targeting process when doing `dlv attach`. The
`/proc/$pid/exe` is a symbol link of the real executable file.
Delve couldn't find the corrsponding external debug file based on the
symbol link:

```
could not attach to pid $pid: could not open debug info
```

The fix is to evaluate the symbol links to the actual executable path.
2020-04-27 09:14:58 -07:00
chainhelen
37bee98a88 pkg/config: add disassemble-flavor option for config
Allow user to specify output syntax flavor of assembly in the
disassemble command.

Close #415
2020-04-23 12:10:05 -07:00
aarzilli
9c24b56f62 proc/tests: disable TestIssue414 on linux/386/PIE
This test will occasionally hang in SetBreakpoint/WriteMemory
2020-04-20 11:08:28 -07:00
aarzilli
f9b6c43910 proc/native: report trapWaitInternal errors in nativeProcess.stop
The process could quit while we are inside stop, we should report the
error otherwise the following code will try to send on the closed
ptrace channel.
Fixes a sporadic error in TestIssue1101.
2020-04-17 09:22:18 -07:00
aarzilli
55543e2570 Makefile: reduce test timeout when TRAVIS==true
Reduces test timeout by one minute so that Go will timeout before
Travis-CI and report useful informations about the hang.
2020-04-17 09:20:55 -07:00
Derek Parker
682ee7ffd0 service/debugger: Rename processMutex to targetMutex
Fixes a long standing dangling TODO item.
2020-04-16 20:14:18 +02:00
Alessandro Arzilli
bc299a7a30
tests: properly check if cgo is enabled for cgo related tests (#2010) 2020-04-16 10:42:22 -07:00
Derek Parker
c06a1a0252 service/debugger: Fix checking for CI 2020-04-14 21:02:38 +02:00
Derek Parker
e5d24a96bf *: Consolidate service/debugger config
Embed the debugger config object in the service config object to avoid needless duplication of fields.
2020-04-14 21:02:38 +02:00
chainhelen
ad9d13c671
proc: Don't set fileFound if there's a compileUnit without line section (#2006)
We should not return error directly which set `fileFound` to be true
if there's a compileUnit without line section.
2020-04-13 14:24:04 -07:00
aarzilli
c534677ece proc/native: disable async preemption on freebsd 2020-04-10 11:03:21 -07:00
aarzilli
ae846a51f2 proc: StepOut remove if condition that is always true 2020-04-10 10:49:19 -07:00
Darren Rambaud
49c6498512 cmd/commands: Update documentation for dlv attach
Commit changes after executing gen-usage-docs.go script

Related to #1995
2020-04-10 10:48:30 -07:00
Darren Rambaud
b13fe990bd cmds/commands: Add --continue flag to attach
Add --continue as a valid flag for the attach command by decorating attachCommand
with the continueOnStart variable.

Fixes #1995
2020-04-10 10:48:30 -07:00
Derek Parker
00aab8d690 vendor: Update vendor 2020-04-10 09:53:13 -07:00
Derek Parker
3e60ae202b *: Add --tty flag for debug / exec
This flag allows users on UNIX systems to set the tty for the program
being debugged by Delve. This is useful for debugging command line
applications which need access to their own TTY, and also for
controlling the output of the debugged programs so that IDEs may open a
dedicated terminal to show the output for the process.
2020-04-10 09:53:13 -07:00
Alessandro Arzilli
c3a4d726e2
Miscellaneous debug_line improvements (#1999)
* dwarf/line: implement DW_LNE_set_discriminator

We don't use the discriminator field in any way but we need to at least
parse it to support debub_line programs that use it.

* dwarf/line: support parsing DWARF4 debug_line sections

There is an extra field maximum_operations_per_instruction that is used
for VLIW CPUs. We don't support this feature but we have to at least
parse the field to not crash.
2020-04-09 13:57:44 -07:00
Darren Rambaud
bc30b53926
gdbserial/gdbserver: Dynamically resolve debugserver binary (#1994)
* gdbserial/gdbserver: Dynamically resolve debugserver binary

Instead of hardcoding the absolute path to the Command Line
Tools (CLT) binary, will attempt to resolve the path at the
$PATH, or at the Xcode bundle. If none are available, will
fallback to the default CLT location.

Fixes #986

* gdbserial/gdbserver: Log outgoing executed commands

Add logging to capture the executable and associated arguments used
in LLDBLaunch and LLDBAttach

Related to #986

* gdbserial/gdbserver: Add unit tests for helper function

Define unit tests for helper function. Setup each test to temporarily make
PATH variable, and file system changes, and subsequently revert them.

Related to #986

* gdbserial/gdbserver: Lazily load function

Lazily obtain absolute path to avoid increasing load times.

Remove flaky tests.

Related to #986
2020-04-09 13:48:38 -07:00
Derek Parker
0c9846c0a4 *: Update freebsd image 2020-04-08 11:40:24 +02:00
aarzilli
3a72646782 Documentation: add modules mode note to install documentation
1. Adds a note to the documentation describing how to use 'go get' in
   modules mode
2. Removes the '-u' option which, when 'go get' is used incorrectly
   will make 'go' try to compile Delve with unsupported dependencies
3. Removed obsolete note about Go 1.5 vendor experiment.

Fixes #1988
2020-04-06 08:32:02 -07:00
aarzilli
7dedf1ed55 proc: simplify next/step/stepout condition code
Adds a library of utility functions to generated breakpoint conditions
for next, step and stepout.
2020-04-04 11:00:54 -07:00
Lukas Spieß
eac6ebed03
Use proper spelling of Xcode (#1984) 2020-04-04 13:58:06 +02:00