- 21 3月, 2019 1 次提交
-
-
由 Alessandro Arzilli 提交于
Adds initial support for plugins, this is only the code needed to keep track of loaded plugins on linux (both native and gdbserial backend). It does not actually implement support for debugging plugins on linux. Updates #865
-
- 27 2月, 2019 1 次提交
-
-
由 Alessandro Arzilli 提交于
Type names need to be quoted when that expression is evaluated, by printing them quoted the user can just copy and paste the output.
-
- 05 1月, 2019 1 次提交
-
-
由 Derek Parker 提交于
The repository is being switched from the personal account github.com/derekparker/delve to the organization account github.com/go-delve/delve. This patch updates imports and docs, while preserving things which should not be changed such as my name in the CHANGELOG and in TODO comments.
-
- 10 11月, 2018 1 次提交
-
-
由 aarzilli 提交于
Users can create sparse maps in two ways, either by: a) adding lots of entries to a map and then deleting most of them, or b) using the make(mapType, N) expression with a very large N When this happens reading the resulting map will be very slow because loadMap needs to scan many buckets for each entry it finds. Technically this is not a bug, the user just created a map that's very sparse and therefore very slow to read. However it's very annoying to have the debugger hang for several seconds when trying to read the local variables just because one of them (which you might not even be interested into) happens to be a very sparse map. There is an easy mitigation to this problem: not reading any additional buckets once we know that we have already read all entries of the map, or as many entries as we need to fulfill the MaxArrayValues parameter. Unfortunately this is mostly useless, a VLSM (Very Large Sparse Map) with a single entry will still be slow to access, because the single entry in the map could easily end up in the last bucket. The obvious solution to this problem is to set a limit to the number of buckets we read when loading a map. However there is no good way to set this limit. If we hardcode it there will be no way to print maps that are beyond whatever limit we pick. We could let users (or clients) specify it but the meaning of such knob would be arcane and they would have no way of picking a good value (because there is no objectively good value for it). The solution used in this commit is to set an arbirtray limit on the number of buckets we read but only when loadMap is invoked through API calls ListLocalVars and ListFunctionArgs. In this way `ListLocalVars` and `ListFunctionArgs` (which are often invoked automatically by GUI clients) remain fast even in presence of a VLSM, but the contents of the VLSM can still be inspected using `EvalVariable`.
-
- 20 10月, 2018 1 次提交
-
-
由 Derek Parker 提交于
This patch allows the `trace` CLI subcommand to display return values of a function. Additionally, it will also display information on where the function exited, which could also be helpful in determining the path taken during function execution. Fixes #388
-
- 16 10月, 2018 2 次提交
- 25 9月, 2018 1 次提交
-
-
由 aarzilli 提交于
Instead of failing on the first goroutine we can't read save the error message and keep going. Fixes a bug reported on the mailing list: https://groups.google.com/d/msgid/delve-dev/3b3bfaa3-83d5-4676-b974-1fec40e5bf53%40googlegroups.com?utm_medium=email&utm_source=footer
-
- 20 9月, 2018 1 次提交
-
-
由 Derek Parker 提交于
Refactors some code, adds a bunch of docstrings and just generally fixes a bunch of linter complaints.
-
- 31 8月, 2018 1 次提交
-
-
由 aarzilli 提交于
Add a flag to Stackframe that indicates where the stack frame is the bottom-most frame of the stack. This allows clients to know whether the stack trace terminated normally or if it was truncated because the maximum depth was reached. Add a truncation message to the 'stack' command.
-
- 25 7月, 2018 1 次提交
-
-
由 aarzilli 提交于
Adds -defer flag to the stack command that decorates the stack traces by associating each stack frame with its deferred calls. Reworks proc.next to use this feature instead of using proc.DeferPC, laying the groundwork to implement #1240.
-
- 14 7月, 2018 1 次提交
-
-
由 aarzilli 提交于
Implements the function call injection protocol introduced in go 1.11 by https://go-review.googlesource.com/c/go/+/109699. This is only the basic support, see TODO comments in pkg/proc/fncall.go for a list of missing features. Updates #119
-
- 10 7月, 2018 1 次提交
-
-
由 aarzilli 提交于
Adds StartPC to proc.G, StartLoc to api.Goroutine and show the start location in the command line client when appropriate. Updates #1104
-
- 29 6月, 2018 1 次提交
-
-
由 aarzilli 提交于
Adds a field, DeclLine, to Variable containing the declaration line number of the variable.
-
- 27 6月, 2018 1 次提交
-
-
由 aarzilli 提交于
This pull request makes several changes to delve to allow headless instancess that are started with the --accept-multiclient flag to keep running even if there is no connected client. Specifically: 1. Makes a headless instance started with --accept-multiclient quit after one of the clients sends a Detach request (previously they would never ever quit, which was a bug). 2. Changes proc/gdbserial and proc/native so that they mark the Process as exited after they detach, even if they did not kill the process during detach. This prevents bugs such as #1231 where we attempt to manipulate a target process after we detached from it. 3. On non --accept-multiclient instances do not kill the target process unless we started it or the client specifically requests it (previously if the client did not Detach before closing the connection we would kill the target process unconditionally) 4. Add a -c option to the quit command that detaches from the headless server after restarting the target. 5. Change terminal so that, when attached to --accept-multiclient, pressing ^C will prompt the user to either disconnect from the server or pause the target process. Also extend the exit prompt to ask if the user wants to keep the headless server running. Implements #245, #952, #1159, #1231
-
- 12 6月, 2018 1 次提交
-
-
由 aarzilli 提交于
Displays the return values of the current function when we step out of it after executing a step, next or stepout command. Implementation of this feature is tricky: when the function has returned the return variables are not in scope anymore. Implementing this feature requires evaluating variables that are out of scope, using a stack frame that doesn't exist anymore. We can't calculate the address of these variables when the next/step/stepout command is initiated either, because between that point and the time where the stepout breakpoint is actually hit the goroutine stack could grow and be moved to a different memory address.
-
- 24 4月, 2018 1 次提交
-
-
由 aarzilli 提交于
Fixes #951
-
- 20 3月, 2018 1 次提交
-
-
由 Josh Soref 提交于
-
- 19 1月, 2018 1 次提交
-
-
由 Alessandro Arzilli 提交于
Much like the bug in issue #1031 and commit f6f6f0bf pointers can also escape to the heap and then have a zero address (and no children) when we autodereference. 1. Mark autodereferenced escaped variables with a 0 address as unreadable. 2. Add guards to the pretty printers for unsafe.Pointer and pointers. Fixes #1075
-
- 21 12月, 2017 1 次提交
-
-
由 aarzilli 提交于
Adds a configuration option (show-location-expr) that when activated will cause the whatis command to also print the DWARF location expression for a variable.
-
- 14 12月, 2017 2 次提交
- 08 12月, 2017 2 次提交
-
-
由 Denis Shevchenko 提交于
-
由 aarzilli 提交于
It can happen if the interface variable escaped, it's out of scope and we autodereference it.
-
- 29 11月, 2017 1 次提交
-
-
由 aarzilli 提交于
Prints the frame and frame pointer offsets for each frame.
-
- 21 11月, 2017 1 次提交
-
-
由 aarzilli 提交于
Conditional breakpoints with unmet conditions would cause next and step to skip the line. This breakpoint changes the Kind field of proc.Breakpoint from a single value to a bit field, each breakpoint object can represent simultaneously a user breakpoint and one internal breakpoint (of which we have several different kinds). The breakpoint condition for internal breakpoints is stored in the new internalCond field of proc.Breakpoint so that it will not conflict with user specified conditions. The breakpoint setting code is changed to allow overlapping one internal breakpoint on a user breakpoint, or a user breakpoint on an existing internal breakpoint. All other combinations are rejected. The breakpoint clearing code is changed to clear the UserBreakpoint bit and only remove the phisical breakpoint if no other bits are set in the Kind field. ClearInternalBreakpoints does the same thing but clearing all bits that aren't the UserBreakpoint bit. Fixes #844
-
- 04 11月, 2017 1 次提交
-
-
由 aarzilli 提交于
gosymtab and gopclntab only contain informations about go code, linked C code isn't there, we should use debug_line instead to also cover C. Updates #935
-
- 25 10月, 2017 1 次提交
-
-
由 aarzilli 提交于
* string to []rune * string to []byte * []rune to string * []byte to string * any pointer to uintptr The string, []rune, []byte conversion pairs aligns this to the go language. The pointer -> uintptr conversion pair is symmetric to the uintptr -> pointer that we already have. Also lets the user specify any size for byte array types instead of just the ones already used by the program, this can be used to read arbitrary memory. Fixes #548, #867
-
- 12 9月, 2017 1 次提交
-
-
由 aarzilli 提交于
Fixes #959
-
- 31 8月, 2017 1 次提交
-
-
由 aarzilli 提交于
The compiler a variable 'v' that escapes to the heap with a '&v' entry. Auto dereference those local variables. Fixe #871
-
- 02 8月, 2017 3 次提交
-
-
由 aarzilli 提交于
Fixes #106
-
由 aarzilli 提交于
Splits out type parsing and go-specific Type hierarchy from x/debug/dwarf, replace x/debug/dwarf with debug/dwarf everywhere, remove x/debug/dwarf from vendoring.
-
由 aarzilli 提交于
The compiler a variable 'v' that escapes to the heap with a '&v' entry. Auto dereference those local variables. Fixe #871
-
- 27 7月, 2017 1 次提交
-
-
由 aarzilli 提交于
When there's a error reading the stack trace the call stack itself could be corrupted and we should return the partial stacktrace that we have. Fixes #868
-
- 30 6月, 2017 2 次提交
-
-
由 Alessandro Arzilli 提交于
The concrete value of an interface is always stored as a pointer inside an interface variable. So far we have followed the memory layout and reported the type of the 'data' attribute of interfaces as a pointer, however this makes it impossible to distinguish interfaces with concrete value of type 'A' from interfaces of concrete value of type '*A'. With this changeset when we autodereference pointers when the concrete type of an interface is not a pointer.
-
由 Florin Pățan 提交于
* Fix various issues detected by megacheck I've ran honnef.co/go/tools/cmd/megacheck and fixed a few of the things that came up there. * Cleanup using Gogland
-
- 21 6月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
Other debuggers can be instructed to decorate the stacktrace with the value of SP. Our SP equivalent is the frame offset, since we can add it to the Stackframe structure without incurring into added costs we should, so that frontends can use it if they want.
-
- 06 5月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
Implements #727
-
- 22 4月, 2017 2 次提交
-
-
由 aarzilli 提交于
- 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.
-
由 aarzilli 提交于
- move native backend to pkg/proc/native - move gdbserver backend to pkg/proc/gdbserial - move core dumps backend to pkg/proc/core
-