- 22 6月, 2018 2 次提交
-
-
由 Derek Parker 提交于
Implements structured logging via Logrus. This gives us a logger per boundry that we care about, allowing for easier parsing of logs if users have more than one log option enabled. Also, cleans up a lot of conditionals in the code by simply silencing the logger at creation as opposed to conditionally logging everywhere.
-
由 Sergio Lopez 提交于
To save disk space, some distributions strip the debugging information from the binaries, putting it in separate files, usually distributed in separate packages. To locate the file containing the debug information for a certain binary, an ELF note named ".note.gnu.build-id" is added to the latter, which contains a header and a build identification. This identification can be used to compose a path with this form: /usr/lib/debug/.build-id/BUILDID[:2]/BUILDID[2:].debug With this patch, if Delve can't find the debug information in the main binary, it'll try to locate and parse ".note.gnu.build-id", to compose and attempt to open a path with the format described above. Fixes #1206
-
- 20 6月, 2018 1 次提交
-
-
由 aarzilli 提交于
A user complained on the mailing list about having continuous "optimized function warnings" on non-optimized functions when using 1.9. This commit fixes the problem by disabling optimized function detection on 1.9 and earlier (where it's impossible) and adds a test so we don't break it again in the future.
-
- 15 6月, 2018 2 次提交
-
-
由 aarzilli 提交于
If the application being debugged imports two packages with the same name (but different paths) there was no way to disambiguate the two, since the character '/' can not appear inside a go identifier. By allowing users to use a string literal as the package name a package path can be specified.
-
由 aarzilli 提交于
We occasionally receive bug reports from users of VSCode-go and GoLand. GoLand has its own way of capturing the packet exchange between itself and delve but VSCode-go (supposedly) doesn't. So far this hasn't been a problem since all bug reports were obvious bugs on the plugin or easy to reproduce without VSCode-go, but it might be helpful in the future to have a way to log the packet exchange between dlv and a frontend. This commit adds a --log-output option to enable logging of all rpc messages and changes service/rpccommon accordingly.
-
- 12 6月, 2018 10 次提交
-
-
由 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.
-
由 aarzilli 提交于
Add a new method "Common" to proc.Process that returns a pointer to a struct that pkg/proc can use to store its things, independently of the backend. This is used here to replace the AllGCache typecasts, it will also be used to store the return values of the stepout breakpoint and the state for injected function calls.
-
由 aarzilli 提交于
Fixes #1227
-
由 aarzilli 提交于
-
由 aarzilli 提交于
go1.11 adds a new extended attribute to all type DIEs containing the address of the corresponding runtime._type struct, use this attribute to find the DIE of the concrete type of interface variables when available.
-
由 aarzilli 提交于
The offset of G changed in go1.11 from 0x8a0 to 0x30. See: https://github.com/golang/go/issues/23617
-
由 aarzilli 提交于
Go1.11 uses the is_stmt flag of .debug_line to communicate which assembly instructions are good places for breakpoints, we should respect this flag. These changes were introduced by: * https://go-review.googlesource.com/c/go/+/102435/ Additionally when setting next breakpoints ignore all PC addresses that belong to the same line as the one currently under at the cursor. This matches the behavior of gdb and avoids stopping multiple times at the heading line of a for statement with go1.11. Change: https://go-review.googlesource.com/c/go/+/110416 adds the prologue_end flag to the .debug_line section to communicate the end of the stack-split prologue. We should use it instead of pattern matching the disassembly when available. Fixes #550 type of interfaces 'c7cde8b1'.
-
由 aarzilli 提交于
-
由 aarzilli 提交于
-
由 aarzilli 提交于
-
- 09 6月, 2018 2 次提交
-
-
由 aarzilli 提交于
Maps were always loaded with using the default configuration during a reslice. This is probably a remnant from when we didn't let clients configure the load parameters.
-
由 aarzilli 提交于
If we don't build artifacts aren't removed after the tests run. Also add a check to prevent this mistake from reoccuring.
-
- 24 5月, 2018 4 次提交
-
-
由 Sergio Lopez 提交于
-
由 Sergio Lopez 提交于
If dwz binary is available in the system, test delve's ability to find deduplicated symbols in the DWARF information. dwzcompression.go contains a small C function (void fortytwo()) which calls glibc's fprintf with stdin as first argument. Normally, stdin will be present as a DW_TAG_variable as part of a DW_TAG_compile_unit named dwzcompression.cgo2.c. After running dwz on the binary, stdin is moved to a DW_TAG_partial_unit, which is imported from dwzcompression.cgo2.c with a DW_TAG_imported_unit. This test verifies that delve is able to find stdin symbol's type, as a way to confirm it understands dwz's compressed/deduplicated DWARF information.
-
由 Sergio Lopez 提交于
The EnableDWZCompression flag allows tests to request BuildFixture to run "dwz" on the Fixture's resulting binary to compress/deduplicate its DWARF sections.
-
由 Sergio Lopez 提交于
'dwz' is a tool that reduces the size of DWARF sections by deduplicating symbols. The deduplicated symbols are moved from their original 'compile unit' to a 'partial unit', which is then referenced from its original location with an 'imported unit' tag. In the case of Go binaries, all symbols are located in a single 'compile unit', and the name of each symbol contains a reference to its package, so 'dwz' is not able to deduplicate them. But still, some C symbols included in the binary are deduplicated, which also alters the structure of the DWARF sections, making delve unable to parse them (crashing in the attempt). While it would've been possible to simply ignore the C symbols, or blindly loading all then into BinaryInfo members (packageVars, Functions...), for correctness sake this change tries to do the right thing, staging symbols into temporary partialUnit objects, moving them to BinaryInfo when they are actually requested by a 'imported unit' tag.
-
- 23 5月, 2018 1 次提交
-
-
由 Chandrashekhara A 提交于
Add -t falg to "goroutines" command. For example, "goroutines -t" will print all the goroutines along with the stack trace.
-
- 22 5月, 2018 1 次提交
-
-
由 aarzilli 提交于
Passing --stdin-path /dev/tty will crash debugserver if /dev/tty can't be open. Fixes #1215
-
- 19 5月, 2018 1 次提交
-
-
由 aarzilli 提交于
Change the linux verison of proc/native and proc/gdbserial (with debugserver) so that they let the target process use the terminal when delve is launched in headless mode. Windows already worked, proc/gdbserial (with rr) already worked. I couldn't find a way to make proc/gdbserial (with lldb-server) work. No tests are added because I can't think of a way to test for foregroundness of a process. Fixes #65
-
- 16 5月, 2018 1 次提交
-
-
由 Jay Mundrawala 提交于
Go seems to be generating multiple compilation units that have the same file. I think this happens for functions that get inlined. Without this patch, those inlined functions break the ability to set a breakpoint at other lines in the file. I was able to load the same binary in gdb and set a breakpoints throughout the file without issue. ``` ➜ objdump --dwarf=decodedline automate-gateway | grep handler/users.go .../handler/users.go:[++] s/.../handler/users.go 20 0xb6dd88 .../handler/users.go:[++] s/.../handler/users.go 20 0xb6e50f .../handler/users.go:[++] s/automate-gateway/handler/users.go 32 0xb66640 ``` Inlined functions are still a little weird. setting a breakpoint on a function that gets inlined picks the first occurence. That being said, I think delve should still do something reasonable for the rest of the lines in the file.
-
- 10 5月, 2018 1 次提交
-
-
由 aarzilli 提交于
Fixes #1203
-
- 08 5月, 2018 1 次提交
-
-
由 aarzilli 提交于
So we don't have to worry about having a nil conf field, even if there is no configuration.
-
- 05 5月, 2018 1 次提交
-
-
由 Yuval Kohavi 提交于
-
- 27 4月, 2018 1 次提交
-
- 24 4月, 2018 3 次提交
-
-
由 aarzilli 提交于
Fixes #951
-
由 aarzilli 提交于
Caching the frame in variablesByTag is problematic: 1. accounting for variables that are (partially) stored in registers is complicated (see issue #1106) 2. for some types (strings, interfaces...) simply creating the Variable object reads memory, which therefore happens before we can do any caching. Instead cache the entire frame when the EvalScope object is created. The cached range is between the SP value of the current frame and the CFA of the preceeding frame, if available, or the CFA of the current frame otherwise. Fixes #1106
-
由 aarzilli 提交于
Change memCache so that the preloaded memory is not read immediately but only after the actual read to the preloaded range. This allows us to request caching the entire stack frame every time we create an eval scope and no unnecessary reads will be made even if the user is just trying to evaluate a global variable.
-
- 20 4月, 2018 2 次提交
-
-
由 Functionary Robot 提交于
Vet found the following errors: pkg/proc/moduledata.go:152: namedata[1] (8 bits) too small for shift of 8 pkg/proc/moduledata.go:170: taglendata[0] (8 bits) too small for shift of 8 The fix is to convert before shifting.
-
由 aarzilli 提交于
-
- 19 4月, 2018 1 次提交
-
-
由 aarzilli 提交于
Since we always forget to update the documentation lets check this automatically.
-
- 18 4月, 2018 1 次提交
-
-
由 Derek Parker 提交于
-
- 14 4月, 2018 4 次提交
-
-
由 aarzilli 提交于
Change evaluation of binary operators so that both && and || only evaluate their second argument conditionally, like go does.
-
由 aarzilli 提交于
I've seen TestFrameEvaluation fail in CI in the past. It's been a while since the last time and I couldn't reproduce it locally at all. I'd like to have some instrumentation in case it happens again.
-
由 aarzilli 提交于
printcontext should use SelectedGoroutine instead of trusting that the goroutine running on current thread matches the SelectedGoroutine. When the user switches to a parked goroutine CurrentThread and SelectedGoroutine will diverge. Almost all calls to printcontext are safe, they happen after a continue command returns when SelectedGoroutine and CurrentThread always agree, but the calls in frameCommand and listCommand are wrong. Additionally we should stop reporting an error when the debugger is stopped on an unknown PC address.
-
由 aarzilli 提交于
-