- 22 11月, 2017 2 次提交
- 21 11月, 2017 5 次提交
-
-
由 aarzilli 提交于
StepBreakpoints are set on CALL instructions, when they are hit we disassemble the current instruction, figure out the destination address and set a breakpoint after the prologue of the called function. In order to disassemble the current instruction we disassemble the area of memory starting from PC and going to PC+15 (because 15 bytes is the maximum length of one instruction on AMD64). This means that we won't just disassemble one instruction but also a few instructions following it ending with one truncated instruction. This usually works fine but sometimes the disassembler will panic with an array out of bounds error when trying to disassemble a truncated instruction. To avoid this problem this commit changes the funciton disassemble to take one extra parameter, singleInstr, when singleInstr is set disassemble will quit after disassembling a single instruction.
-
由 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
-
由 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
-
由 aarzilli 提交于
Move some duplicate code, related to breakpoints, that was in both backends into a single place. This is in preparation to solve issue #844 (conditional breakpoints make step and next fail) which will make this common breakpoint code more complicated.
-
- 18 11月, 2017 2 次提交
-
-
由 aarzilli 提交于
Since it's just a scratchpad to calculate the new set of registers it makes more sense to have it as a local variable in Next and advanceRegs.
-
由 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.
-
- 16 11月, 2017 2 次提交
-
-
由 aarzilli 提交于
A thread could terminate between the point when we stop for a breakpoint and the point where we send a stop signal to all threads, if this happens setCurrentBreakpoints will fail with an error. We should tolerate this. For some reason this happens very frequently when running delve on processes with the race detector enabed.
-
由 aarzilli 提交于
Adds test command line flag to compile target fixtures using the -race flag. Multiple tests will fail because of https://github.com/golang/go/issues/22600 but eventually this should work.
-
- 04 11月, 2017 6 次提交
-
-
由 aarzilli 提交于
Some linkers will sometimes insert a zero length entry between the last FDE of a CIE and the next CIE.
-
由 aarzilli 提交于
-
由 aarzilli 提交于
1. Use a slice instead of a map to access standard and extended opcodes (reduces BenchmarkStateMachine from ~12ms/op to ~7ms/op) 2. Cache StateMachine values for the entry point of functions.
-
由 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
-
由 Davor Kapsa 提交于
-
由 Davor Kapsa 提交于
-
- 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
-
- 21 10月, 2017 1 次提交
-
-
由 aarzilli 提交于
-
- 17 10月, 2017 1 次提交
-
-
由 aarzilli 提交于
-
- 26 9月, 2017 1 次提交
-
-
由 aarzilli 提交于
Make 'next' skip deferred functions unless they are called via a panic. Call to a deferred function through 'return' are predictable, if the user wants to step into them 'step' can be used but without this change there is no way to avoid stepping into them. Implements #956
-
- 21 9月, 2017 1 次提交
-
-
由 aarzilli 提交于
On macOS we can also stop when we receive a signal, propagate this reason upwards to the client. Also clear internal breakpoints after an unrecovered-panic since they can not be reached anymore. Fixes #872
-
- 12 9月, 2017 1 次提交
-
-
由 aarzilli 提交于
Fixes #959
-
- 09 9月, 2017 3 次提交
- 31 8月, 2017 3 次提交
-
-
由 aarzilli 提交于
The compiler a variable 'v' that escapes to the heap with a '&v' entry. Auto dereference those local variables. Fixe #871
-
由 aarzilli 提交于
While we are waiting for the process to exit in native.(*Process).Kill we could receive queued exception events, those must be continued or the wait will never finish.
-
由 aarzilli 提交于
Fixes #940
-
- 15 8月, 2017 1 次提交
-
-
由 aarzilli 提交于
Always pick a goroutine that we know will have to be resumed before the program terminates instead of relying on luck. Fixes #803
-
- 10 8月, 2017 1 次提交
-
-
由 aarzilli 提交于
-
- 08 8月, 2017 1 次提交
-
-
由 Tao Zhou 提交于
-
- 02 8月, 2017 8 次提交
-
-
由 Joey Geiger 提交于
This is a "fix" for the issue of being unable to see the source when setting a breakpoint on main.init. Fixes #922
-
由 aarzilli 提交于
Our tests are not designed to be run in parallel, for example there are multiple tests in disparate packages all trying to run textnextnethttp which will compete for access to port 9191, we shouldn't let tests run in parallel.
-
由 aarzilli 提交于
-
由 aarzilli 提交于
By specifying the -a flag we insure that all packages are recompiled with -gcflags='-N -l'. Previously -a could not be specified because the compiler could not compile runtime without optimizations. Fixes #738
-
由 aarzilli 提交于
Fixes #106
-
由 aarzilli 提交于
go1.9 no longer needs "linkmode internal" on windows. Fixes #755 Fixes #477 Fixes #631
-
由 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 提交于
-