Commit Graph

44 Commits

Author SHA1 Message Date
Derek Parker
39945498a8 Improve 'next': return into deferred func 2015-05-09 12:44:38 -05:00
Derek Parker
867b3ff8a1 Handle defer blocks when next'ing 2015-05-08 17:35:25 -05:00
Derek Parker
da688b8184 Handle runtime.Breakpoint 2015-04-25 14:13:35 -05:00
Derek Parker
58db8322ef Improve chan / goroutine coordination
* Properly find next source line for goroutines blocked in chanrecv
* Refactor breakpoint clearing
* Refactor temp breakpoint setting
2015-04-19 17:15:34 -05:00
Derek Parker
86e1530524 Improve next implementation
* Better tracking of current goroutine
* More efficient, eliminates superfluous step syscalls
* Handles concurrency and thread coordination better
2015-03-31 17:12:45 -05:00
Derek Parker
2d2d70641e (Mostly) working on OS X 2015-02-27 15:03:06 -06:00
epipho
c7fe4e3e88 Added limit to array size (64) and struct member recursion (2) when printing 2015-02-04 13:15:10 -05:00
epipho
1782e13f74 Genericized slice reading 2015-01-20 01:37:52 -05:00
epipho
e2236664dd Genericized array reading 2015-01-20 00:32:08 -05:00
epipho
99b614a028 Adding support for reading function pointers and mapping them to function names 2015-01-19 23:15:40 -05:00
epipho
056df44318 Support for uint and boolean types 2015-01-19 22:18:17 -05:00
epipho
67ad85feec readString can now read strings of any length as well as sliced strings 2015-01-19 19:30:15 -05:00
epipho
7c61e2a1cb EvalSymbol supports evaluating struct members on pointers. Fixed panic
when evaluating a nil pointer.
2015-01-02 10:02:56 -06:00
epipho
2c5527c6c9 Refactor member variable evaluation so it works in all cases 2014-12-31 16:20:26 -05:00
epipho
07940dc59e Added info locals and info args commands 2014-12-30 12:58:44 -05:00
Derek Parker
623ec5e53d Improve array evaluation support
* First of a few commits to allow for evaluating arrays of arbitrary
  types
* Adds support for 32 bit integer arrays
2014-12-28 22:37:18 -06:00
Derek Parker
3b2b17938b Improve support for goroutine context switching
Remove any assumption that a wait syscall on a thread id after a
continue will return. Any time we continue a thread, wait for activity
from any thread, because the scheduler may well have switched contexts
on us due to syscall entrace, channel op, etc...

There are several more things to be done here including:

* Potential tracking of goroutine id as we jump around to thread
  contexts.
* Potential of selectively choosing threads to operate on based on the
  internal M data structures, ensuring that our M has an active G.

This commit partially fixes #23 and #24, however there are still some
random hangs that happen and need to be ironed out.
2014-11-24 17:57:52 -06:00
Derek Parker
dcf9f04d45 Improve variable evaluation scope
Properly scope variable evaluation to the function the traced process is
currently stopped in.
2014-11-10 21:26:13 -06:00
Derek Parker
6b2ee09163 Improve overall thread coordination 2014-11-07 23:45:54 -06:00
Derek Parker
f1ceba0909 Support 32 bit floats 2014-10-26 12:44:26 -05:00
Derek Parker
a3700a4407 Improve support for int variable evaluation 2014-10-25 11:07:12 -05:00
Derek Parker
4c95bf7302 (Mostly) working multithreaded tracing implementation
Areas that need improving:

* Code cleanup
* Promote breakpoints back out of thread context
* Fix potential bug in "Next" implementation, when thread contexts
  switch
2014-10-25 08:59:22 -05:00
Derek Parker
099efeeb9d Allow evaluation of function params 2014-10-17 14:14:55 -05:00
Derek Parker
58c1f54578 Improve Next implementation
Fix bug involving detecting whether or not we have stepped into another
function when we plan on return from the function we are currently in.
2014-10-13 19:04:38 -05:00
Derek Parker
dc8c9cc2a4 Optimize Next implementation
Once the program detects that we have stepped into another function,
we simply calculate the return address and then set a breakpoint and
continue to that location, avoiding numerous syscalls.
2014-10-13 08:24:59 -05:00
Derek Parker
6a71009954 Fix Next impl
Needs some refactoring and some optimization, but fixes several bugs.
2014-10-09 14:19:10 -05:00
Derek Parker
9b6077b100 Update live test prog 2014-10-07 17:02:04 -05:00
Derek Parker
f8a65c41c5 Improve next impl -- needs refactoring 2014-10-04 00:52:40 -05:00
Derek Parker
ea087ba1b1 Modify fixture prog 2014-09-19 19:58:16 -05:00
Derek Parker
8ee9525f47 Ensure temp breakpoints are cleared after next 2014-09-18 22:28:21 -05:00
Derek Parker
2fa307f7c7 Remove test binaries 2014-09-12 14:56:27 -05:00
Derek Parker
93db6249a0 Launch prog from cli, also exit cleanly 2014-08-23 08:20:56 -05:00
Derek Parker
44dba87c5d Add some delay to livetestprog 2014-08-15 21:04:21 -05:00
Derek Parker
21025b2fc6 Implement basic array evaling 2014-08-04 15:21:35 -05:00
Derek Parker
31f7278526 Don't include debug artifacts 2014-08-04 13:52:03 -05:00
Derek Parker
2b83a1f3ca Implement reading of float64 value 2014-08-04 13:20:20 -05:00
Derek Parker
3993cfe148 Implement basic int value expressions 2014-08-01 16:34:49 -05:00
Derek Parker
319f6d2e20 Remove dwarf hack because Go fixed bug 2014-08-01 16:34:27 -05:00
Derek Parker
eeb5757097 Update binary prog for newer Go version 2014-07-11 16:17:51 -05:00
Derek Parker
3566fd5237 Improve next implementation
Improvements:
* `next`ing through a loop works correctly (when not already within a loop)
* `next`ing out of a function works correctly

Needs work:
* `next`ing in a loop can be improved when starting within a loop
2014-07-10 18:07:39 -05:00
Derek Parker
a788e03c7b Implement initial next implementation
This current implementation does not cover the following:

* Setting correct breakpoint when exiting loop
* Setting correct breakpoint when returning from function
    * All facilities are available for this, it just is not taken into
      account in the current `next` implementation.
2014-07-07 08:26:36 -05:00
Derek Parker
38bfdaf47c Implement initial support for stack unwinding.
Implement basic api for figuring out, given a current PC value, where
the function will return. Currently the API provides only a way to
determine the offset from SP (the Canonical Frame Address). It is left
up to the caller to grab the actual address from the traced program.
2014-06-25 14:14:29 -05:00
Derek Parker
8fb5e164b3 Update test progs for go13 2014-06-09 13:28:06 -05:00
Derek Parker
d36297687a Underscore fixtures dir to ignore during test run 2014-06-09 10:55:18 -05:00