43 Commits

Author SHA1 Message Date
62f721ac54 Un-export that which need not be exported 2015-06-13 14:13:26 -05:00
109e5ab109 Copy instructions for FDE 2015-04-23 09:16:44 -05:00
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
92e0cb9f8b Rename method for clarity 2015-04-15 14:09:05 -05:00
8ebab600f0 Copy InitialInstructions to prevent mutation 2015-04-15 14:08:18 -05:00
464a6b96fe Fix FDE lookup at function entry
Also, rearrange and cleanup file a bit.

Fixes #72
2015-03-02 19:10:55 -06:00
d4d8f1ce58 Update documentation 2015-03-02 18:06:04 -06:00
7f52928c03 Cleanup of printing and putsing 2015-02-27 15:27:48 -06:00
2d2d70641e (Mostly) working on OS X 2015-02-27 15:03:06 -06:00
4d88d9ed8d Prefer binary search over tree lookup for FDEs
FDEs previously were loaded into a red/black tree and searched. This is
significantly more expensive than a binary search over a slice. Not sure
what I was thinking using a red/black tree - this binary search
implementation is significantly more efficient.
2015-02-04 19:22:39 -06:00
76076791b9 Fix stack frame calculation bug
There were certain instances where the calculation of the stack frame
was incorrect, causing for garbage to be returned by a print command.
2015-01-16 15:30:22 -06:00
e0738c417c Remove helper file & further isolate linux code 2014-12-09 10:51:17 -06:00
e299dfde08 Isolate linux specific register getters / setters 2014-12-08 17:54:34 -06:00
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
5722de6d2b Improve Dwarf frame establishing function
Remove reliance on order of dwarf instructions.
2014-11-24 07:53:39 -06:00
5331dad93d Rename project 2014-10-15 09:28:22 -05:00
fa0092ac74 Rename helper dir 2014-10-14 09:53:10 -05:00
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
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
c60f3aafde Refactor: Remove addrrange type 2014-10-11 01:05:27 -05:00
09e352bdf7 Refactor: Move Cover method to FDE 2014-10-11 00:52:05 -05:00
24b4c42ed9 cleanup failure message 2014-10-10 15:53:30 -05:00
5d62780ec3 cleanup file names 2014-10-10 15:49:20 -05:00
6a71009954 Fix Next impl
Needs some refactoring and some optimization, but fixes several bugs.
2014-10-09 14:19:10 -05:00
c9cbaea291 Optimize Next implementation
Now that I'm using the step strategy, I put in an optimization where if
stepping into another function, simply find the return address, put a
breakpoint there, and then continue.
2014-10-07 13:57:03 -05:00
f8a65c41c5 Improve next impl -- needs refactoring 2014-10-04 00:52:40 -05:00
04c5f785f9 Remove unused test helper funcs 2014-09-19 16:44:20 -05:00
eae4e99f78 Cleanup dwarf/frame tests 2014-09-18 23:00:41 -05:00
8ee9525f47 Ensure temp breakpoints are cleared after next 2014-09-18 22:28:21 -05:00
f1e5a70a4b Update for Go 1.3.1
I decided to vendor all debug/dwarf and debug/elf files so that the
project can be go get-table. All changes that I am waiting to land in Go
1.4 are now captured in /vendor/debug/*.
2014-09-13 12:28:46 -05:00
6ae71169ed Update return address offset finder for laster go version 2014-09-12 15:59:29 -05:00
9c298036b9 Rebuild binaries for every test 2014-09-12 15:19:36 -05:00
232d3d7446 Prefer "new" for initialization 2014-09-01 10:39:04 -05:00
631c8d902d Remove dead test 2014-08-07 11:04:07 -05:00
0af47b64ce Use external red/black tree package 2014-08-07 11:03:42 -05:00
2ed77e542c Refactor: Simplify frame parser 2014-08-05 19:02:44 -05:00
c59f19cfb2 Refactor: Implement red/black tree for FDE lookup 2014-08-05 10:54:21 -05:00
3993cfe148 Implement basic int value expressions 2014-08-01 16:34:49 -05:00
319f6d2e20 Remove dwarf hack because Go fixed bug 2014-08-01 16:34:27 -05:00
235619de3a Use stored return addr reg instead of constant 2014-07-29 17:34:53 -05:00
c546ea2ef7 Reduce running time / allocations of frame parser 2014-07-14 13:30:04 -05:00
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
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