- 29 11月, 2017 1 次提交
-
-
由 aarzilli 提交于
When creating a stack trace we should switch between the goroutine stack and the system stack (where cgo code is executed) as appropriate to reconstruct the logical stacktrace. Goroutines that are currently executing on the system stack will have the SystemStack flag set, frames of the goroutine stack will have a negative FrameOffset (like always) and frames of the system stack will have a positive FrameOffset (which is actually just the CFA value for the frame). Updates #935
-
- 22 11月, 2017 2 次提交
- 21 11月, 2017 2 次提交
-
-
由 aarzilli 提交于
If 'iv' is an interface variable with a struct as a concrete value let 'iv.A' evaluate to the access to field 'A' of the concrete value of 'iv'.
-
由 aarzilli 提交于
Replace the unsafe.Pointer type of the buf field of channels with the appropriate array type, allow expressions accessing member field of the channel struct. Fixes #962
-
- 18 11月, 2017 1 次提交
-
-
由 aarzilli 提交于
Instead of only tracking a few cherrypicked registers in stack.go track all DWARF registers. This is needed for cgo code and for the locationlists emitted by go in 1.10: * The debug_frame sections emitted by C compilers can not be used without tracking all registers * the loclists emitted by go1.10 need all registers of a frame to be interpreted.
-
- 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
-
- 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 4 次提交
-
-
由 aarzilli 提交于
Fixes #106
-
由 aarzilli 提交于
Before go1.9 embedded struct fields had name == "" in runtime and == type name in DWARF. After go1.9 both runtime and DWARF use a simplified version of the type as name. Embedded structs are distinguished from normal fields by setting a flag in the runtime.structfield, for runtime, and by adding a custom attribute in DWARF.
-
由 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
-
- 19 7月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
Variable lookup is slow because it requires a full scan of debug_info to check for package variables, this doesn't matter much in interactive use but can slow down evaluation of breakpoint conditions significantly. Providing benchmark proof for this is hard since this effect doesn't show for small programs with small debug_info sections.
-
- 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
-
- 31 5月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
If we don't fill the Len field there will be no way for the user to distinguish maps we didn't load from empty maps.
-
- 27 5月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
Buckets of maps with zero sized value types (i.e. map[T]struct{}) have zero length value arrays.
-
- 26 5月, 2017 1 次提交
-
-
由 aarzilli 提交于
A waitreason string that has invalid length (because the G struct is corrupted or being modified) could cause a crash.
-
- 25 5月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
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.
-
- 17 5月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
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
-
- 26 4月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
* proc/eval: fix length calculation for string concatenation * proc/variable: find package variables when the package has a path
-
- 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
-
- 19 4月, 2017 2 次提交
- 14 4月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
* proc: Refactor stackIterator to use memoryReadWriter and BinaryInfo * proc: refactor EvalScope to use memoryReadWriter and BinaryInfo * proc: refactor Disassemble to use memoryReadWriter and BinaryInfo
-
- 07 4月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
* 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
-
- 14 3月, 2017 1 次提交
-
-
由 dr2chase 提交于
Stack barriers were removed in Go 1.9, and thus code that expected various stack-barrier-related symbols to exist does not find them. Check for their absence and do not crash when they are missing. Disable stack-barrier-handling test for 1.9 and beyond. Fixes #754.
-
- 10 2月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
loadValue didn't react correctly to pointer loops going through slice -> interface{} -> slice or pointer -> interface{} -> pointer.
-
- 09 2月, 2017 3 次提交
-
-
由 Derek Parker 提交于
-
由 Derek Parker 提交于
-
由 Alessandro Arzilli 提交于
Under currently undetermined circumstances we encounter a map type that has a malformed buckets, oldbuckets or overflow field. Check the type of buckets, oldbuckets and overflow before using them. Fixes #685
-
- 08 2月, 2017 2 次提交
-
-
由 Alessandro Arzilli 提交于
* service/rpccommon: fixed typo * proc: test parseG while target is in runtime.deferreturn runtime.deferreturn will change the value of curg._defer.fn in such a way that if the target is stopped at just the right instruction it may crash an incorrect implementation of parseG * proc/stack: handle stack barriers correctly Correctly handle stack barriers insterted during garbage collection.
-
由 Alessandro Arzilli 提交于
* proc: Added trace benchmark Results: BenchmarkTrace-4 5000 36195899 ns/op * proc/linux: faster single step implementation. BenchmarkTrace-4 5000 2093271 ns/op * proc: Cache function debug_info entries to speed up variable lookup. BenchmarkTrace-4 5000 1864846 ns/op * proc/variables: Optimize FunctionArguments by prefetching frame BenchmarkTrace-4 5000 1815795 ns/op * proc/variables: optimized parseG BenchmarkTrace-4 10000 712767 ns/op
-
- 21 1月, 2017 1 次提交
-
-
由 Alessandro Arzilli 提交于
Unfortunately go/constant does not support NaN and Inf float values so we need to store this information alongside. Fixes #705
-
- 17 12月, 2016 1 次提交
-
-
由 aarzilli 提交于
Fixes #645
-
- 03 11月, 2016 1 次提交
-
-
由 Alessandro Arzilli 提交于
Since we store all signed integers as int64 the sign bit should be extended, otherwise we read negative integers as their 2-complement value.
-
- 27 10月, 2016 1 次提交
-
-
由 aarzilli 提交于
Generate names of the concrete types stored inside interface variables by fully parsing their runtime._type instead of simply using the str field. This allows delve to read the contents of an interface variable when the program imports multiple packages that have the same name. It also allows delve to correctly interpret some complex anonymous types. Fixes #455
-
- 25 9月, 2016 1 次提交
-
-
由 Alessandro Arzilli 提交于
Fixes #642
-
- 07 9月, 2016 1 次提交
-
-
由 Alessandro Arzilli 提交于
-