delve/_fixtures
aarzilli 290e8e7528 proc: support inlining
Go 1.10 added inlined calls to debug_info, this commit adds support
for DW_TAG_inlined_call to delve, both for stack traces (where
inlined calls will appear as normal stack frames) and to correct
the behavior of next, step and stepout.

The calls to Next and Frame of stackIterator continue to work
unchanged and only return real stack frames, after reading each line
appendInlinedCalls is called to unpacked all the inlined calls that
involve the current PC.

The fake stack frames produced by appendInlinedCalls are
distinguished from real stack frames by having the Inlined attribute
set to true. Also their Current and Call locations are treated
differently. The Call location will be changed to represent the
position inside the inlined call, while the Current location will
always reference the real stack frame. This is done because:

* next, step and stepout need to access the debug_info entry of
the real function they are stepping through
* we are already manipulating Call in different ways while Current
is just what we read from the call stack

The strategy remains mostly the same, we disassemble the function
and we set a breakpoint on each instruction corresponding to a
different file:line. The function in question will be the one
corresponding to the first real (i.e. non-inlined) stack frame.

* If the current function contains inlined calls, 'next' will not
set any breakpoints on instructions that belong to inlined calls. We
do not do this for 'step'.

* If we are inside an inlined call that makes other inlined
functions, 'next' will not set any breakpoints that belong to
inlined calls that are children of the current inlined call.

* If the current function is inlined the breakpoint on the return
address won't be set, because inlined frames don't have a return
address.

* The code we use for stepout doesn't work at all if we are inside
an inlined call, instead we call 'next' but instruct it to remove
all PCs belonging to the current inlined call.
2018-03-26 14:30:38 -04:00
..
buildtest dlv: bugfix: Allow quoting in build flags argument (#639) 2016-09-25 08:26:59 -07:00
cgostacktest proc: support cgo stacktraces 2017-11-28 11:00:53 -08:00
fputest proc/core: Make TestCoreFpTest less flaky 2018-03-20 09:34:05 -07:00
nomaindir proc: detect when Launching non-executable files 2016-06-30 09:39:18 +02:00
vendor proc: allow evaluating constants specified with a partial package path 2018-03-20 09:46:35 -07:00
binarytrees.go Improve stacktraces (#721) 2017-02-08 14:14:57 +01:00
bpcountstest.go proc: Continue does not work with breakpoints set on NOP (OSX) 2016-01-09 08:44:28 +01:00
bpfile terminal: Implements init file and source command 2015-10-04 10:32:38 -07:00
break.go tests: Add test for #149, fixed TestNextGeneral on tip 2016-02-28 16:44:22 -08:00
callme.go Go 1.8 compatibility (part 2) (#667) 2017-02-07 13:07:18 -08:00
cgotest.go dwarf/line: Support for parsing multiple file tables 2015-08-29 14:51:27 -05:00
clientdo.go proc,prettyprint: guard against autodereferenced escaped pointers (#1077) 2018-01-19 15:50:28 +01:00
consts.go proc: allow evaluating constants specified with a partial package path 2018-03-20 09:46:35 -07:00
continuetestprog.go Underscore fixtures dir to ignore during test run 2014-06-09 10:55:18 -05:00
coreemptystring.go proc: fix reading of empty strings in core files 2018-03-08 11:58:03 -08:00
debug_line_benchmark_data pkg/dwarf/line: improve performance 2017-11-03 20:57:04 +01:00
decllinetest.go pkg/proc: use DW_AT_decl_line to determine var visibility 2017-12-13 12:18:18 -08:00
defercall.go proc: bugfix: Next and normal calls to deferred function 2016-09-27 09:37:26 +02:00
dotpackagesiface.go proc: support interface type resolution for packages containing a dot 2018-03-05 10:07:11 -08:00
goroutinestackprog.go Extend the "frame" command to set the current frame. (#1110) 2018-03-22 10:02:15 -07:00
increment.go proc: next, stepout should work on recursive goroutines (#831) 2017-05-16 11:23:33 -07:00
integrationprog.go Launch prog from cli, also exit cleanly 2014-08-23 08:20:56 -05:00
is sue239.go proc: bugfix: status does not work with programs containing spaces 2015-10-04 12:01:09 -07:00
issue262.go proc: Continue does not work with breakpoints set on NOP (OSX) 2016-01-09 08:44:28 +01:00
issue305.go proc: bugfix: clearing temp breakpoints 2016-01-16 09:13:15 +01:00
issue332.go proc: bugs setting next breakpoints 2016-02-11 08:28:07 +01:00
issue384.go proc/variables: crash while reading unintialized variable 2016-01-31 20:14:17 +01:00
issue387.go terminal,service: auto-continue during next and step (#448) 2016-04-24 16:20:02 -07:00
issue406.go all: Spelling 2018-03-20 11:05:35 +01:00
issue419.go debugger: bugfix: make delve API thread safe 2016-02-24 17:49:30 -08:00
issue528.go service/test: Added test for issue #528 2016-05-18 09:07:19 +02:00
issue561.go proc: Implement Step using Continue 2016-09-27 09:37:33 +02:00
issue573.go proc: Renamed temp breakpoints to internal breakpoints 2016-09-30 08:35:29 +02:00
issue594.go proc: changed windows backend to deal with simultaneous breakpoints (#598) 2016-10-21 21:51:34 -07:00
issue664.go Go 1.8 compatibility (part 2) (#667) 2017-02-07 13:07:18 -08:00
issue683.go Fix for #614 and #683 (#687) 2017-01-09 15:21:54 -08:00
issue871.go proc: auto-dereference local variables that escape to the heap 2017-08-01 11:20:25 -06:00
issue877.go Pass LD_/DYLD_ env vars to debugserver (fixes #877) (#910) 2017-07-18 12:57:41 -06:00
issue1101.go proc/native: fix race condition between Halt and process death (linux) 2018-03-06 09:06:19 -08:00
issue1145.go proc: manual stop requests should clear internal breakpoints 2018-03-08 12:02:29 -08:00
livetestprog.go (Mostly) working multithreaded tracing implementation 2014-10-25 08:59:22 -05:00
locationsprog2.go Disassemble command 2016-02-11 16:59:07 -08:00
locationsprog3.go debugger/locations: prioritize exact matches of function names (#651) 2016-10-21 22:04:03 -07:00
locationsprog.go debugger/locations: if locspec isn't found try interpreting it as expr (#858) 2017-07-26 12:52:51 -06:00
locationsUpperCase.go Fix path lookup logic on Windows. 2016-02-05 14:45:27 -08:00
loopprog.go Inject SIGTRAP for manual stop 2015-07-07 15:55:22 -05:00
math.go Go 1.7 compatibility (#524) 2016-05-29 12:20:09 -07:00
nextcond.go proc: next should not skip lines with conditional bps 2017-11-20 11:25:35 -08:00
notify-v2.go terminal: bugfix: deref of nil SelectedGoroutine switching goroutines (#829) 2017-05-08 11:16:14 -07:00
panic.go proc: implement target.Interface for core files 2017-04-18 13:25:11 -07:00
parallel_next.go command (next): Improvements for parallel programs 2015-08-20 09:32:59 -05:00
pkgrenames.go Pull Request #731 but with tests (#802) 2017-04-25 10:42:41 -07:00
pr1055.go Remove limitation of exit notification only for specific API calls 2018-01-02 11:28:43 -08:00
restartargs.go command/terminal: allow restart to change process args (#1060) 2018-01-18 14:16:11 -08:00
retstack.go stack command: -full flag prints local variables and arguments of all the functions on the stack trace 2015-09-18 08:34:21 +02:00
scopeescapevareval.go proc: lexical block support 2017-08-01 11:20:25 -06:00
scopetest.go pkg/prog/test: add flag to run target with -race flag 2017-11-15 08:51:57 -08:00
sigchldprog.go Fix: Improve handling of soft signals on darwin 2015-08-11 19:20:25 -05:00
stacktraceprog.go Implement stack command 2015-06-20 15:29:33 -05:00
testargs.go proc: Fix command-line arguments on Windows (#501) 2016-04-21 14:20:38 -07:00
testenv.go proc/gdbserial: pass environment variables to target (#820) 2017-05-04 10:46:45 -07:00
testinline.go proc: support inlining 2018-03-26 14:30:38 -04:00
testnextdefer.go Improve 'next': return into deferred func 2015-05-09 12:44:38 -05:00
testnextnethttp.go proc: add test for attach/detach, fix detach (#773) 2017-03-28 09:30:27 -07:00
testnextprog.go Correctly handle hardware breakpoints across threads 2015-06-11 22:46:06 -05:00
testprog.go Fix: Linux - call wait4 on thread grp leader is broken 2015-06-26 22:10:09 -05:00
testreturnaddress.go Fix: Handle inability to find return addr 2015-08-10 10:45:33 -05:00
testruntimebreakpoint.go Handle runtime.Breakpoint 2015-04-25 14:13:35 -05:00
testshadow.go proc: lexical block support 2017-08-01 11:20:25 -06:00
teststep.go proc: step now goes to next line, including funcs 2016-01-24 15:48:36 -08:00
teststepconcurrent.go proc: Implement Step using Continue 2016-09-27 09:37:33 +02:00
teststepprog.go proc: Implement Step using Continue 2016-09-27 09:37:33 +02:00
testthreads.go Introduce JSON-RPC service 2015-06-21 21:11:30 -05:00
testvariables2.go proc: support access to chan buffers 2017-11-20 12:03:35 -08:00
testvariables.go Changed api.Variable to have a machine readable value 2015-10-28 18:28:58 -07:00
traceperf.go Trace optimizations (#695) 2017-02-07 13:08:11 -08:00
workdir.go Flag to set working directory (#650) 2016-11-01 12:58:42 -07:00