Commit Graph

296 Commits

Author SHA1 Message Date
Derek Parker
0ac24abd2d Validate args to thread command 2015-03-26 13:15:35 -05:00
Derek Parker
0d9b1ed29b Minor function refactor 2015-03-24 08:31:56 -05:00
Derek Parker
684dc92ccd Improve handling of process natural death (OS X) 2015-03-21 17:33:35 -05:00
Derek Parker
6b3d724fdc Return error if thread_resume fails on suspend_count > 0 2015-03-21 17:05:45 -05:00
Derek Parker
530f66dcf6 Remove erroneous vm deallocation 2015-03-21 17:05:13 -05:00
Derek Parker
8ad5639c5e Fix C file formatting 2015-03-21 15:05:09 -05:00
Derek Parker
b8693f6d1a Properly restore vm protections in OS X 2015-03-20 23:48:57 -05:00
Derek Parker
f8a9a410fb Remove MIG generated exception / message handling
This allows greater flexibility for using a port set and determining
whether the wait returned due to a breakpoint or process natural death.
2015-03-20 16:07:26 -05:00
Derek Parker
e616b7fab6 Stop debugged proc on ctrl-c (OS X) 2015-03-13 15:13:41 -05:00
Derek Parker
4729ae828b Allow arbitrary switching between threads 2015-03-13 14:50:01 -05:00
Derek Parker
9f70f43f5c Update thread printing, now denotes current thread
Also refactored code a bit, removed printing functions from proctl
package and inlined them into command.
2015-03-11 18:08:20 -05:00
Derek Parker
11405314d8 Continue thread properly taking into account suspend_count 2015-03-07 18:27:03 -06:00
Derek Parker
0660fcc09b Reap child process for status (OS X) 2015-03-06 17:28:53 -06:00
Ivar Gaitan
8b04d877a0 Handle process natural death a bit better 2015-03-06 17:03:08 -06:00
Derek Parker
f39e134d1d Improve error for HW breakpoint 2015-03-06 08:53:55 -06:00
Derek Parker
0b3cf1cd15 Add command to print active breakpoints 2015-03-06 08:53:54 -06:00
Derek Parker
c4f90625f6 Fix linux build 2015-03-01 11:02:17 -05:00
Derek Parker
562a6fcca0 Fix mach kernal deallocations 2015-03-01 09:46:01 -06:00
Derek Parker
03b17821c8 Inline function 2015-02-28 22:10:39 -06:00
Derek Parker
ac914fe14a Organize code a bit more 2015-02-28 22:08:42 -06:00
Derek Parker
2b76fee539 Inline function 2015-02-28 22:03:26 -06:00
Derek Parker
9f05f444eb Cleanup TODOs 2015-02-28 21:53:26 -06:00
Derek Parker
c7cc84fa83 More cleanup 2015-02-28 21:34:55 -06:00
Derek Parker
0ba45f8487 Cleanup 2015-02-28 21:14:22 -06:00
Derek Parker
cd30ca6cb4 Remove defs file 2015-02-28 21:14:13 -06:00
Derek Parker
4d918aeb2c Handle more kern return values and general cleanup 2015-02-28 10:44:36 -06:00
Derek Parker
b065674fe3 Handle set_pc errors 2015-02-28 10:41:05 -06:00
Derek Parker
636719a4c6 Handle thread_get_state errors 2015-02-28 10:39:21 -06:00
Derek Parker
77725b3d66 Cleanup kernel allocations 2015-02-28 10:35:44 -06:00
Derek Parker
f4ec73bb62 Fix hanging issue on Linux 2015-02-28 09:05:37 -05:00
Derek Parker
27f68abebd Fix Linux panic 2015-02-27 22:35:26 -05:00
Derek Parker
450e5c4805 Fix linux compile errors 2015-02-27 17:13:35 -06:00
Derek Parker
35a0471fd6 Update more exc files for cond compilation 2015-02-27 15:32:47 -06:00
Derek Parker
fc4469b460 Rename exc files for conditional compilation 2015-02-27 15:31:07 -06:00
Derek Parker
7f52928c03 Cleanup of printing and putsing 2015-02-27 15:27:48 -06:00
Derek Parker
2d2d70641e (Mostly) working on OS X 2015-02-27 15:03:06 -06:00
Derek Parker
daf5030023 slight cleanup 2015-02-17 12:27:47 -05:00
Derek Parker
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
epipho
6b843c18eb Removed debugging printf 2015-02-04 13:15:10 -05:00
epipho
46b5348455 Comment cleanup. Added info vars reference to docs 2015-02-04 13:15:10 -05: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
fe8e85e341 Start of info vars 2015-02-04 13:15:10 -05:00
epipho
5231b06a6b Added handler for unknown and void types. Handle nil fn pointers. 2015-02-04 13:15:09 -05:00
Derek Parker
aa8ad88965 Improve documentation 2015-02-02 16:09:56 -05:00
Derek Parker
e001bbfff2 Fix race between Delve and tracee runtime
This commit fixes a race condition between Delve and the runtime of the traced process. When a new thread is created in the traced process, Delve takes note of it and then continue both the new thread, and the thread that called clone. If Delve attempts to use data in `runtime.allm` before the new `m->procid` is set, errors occur. The errors are due to Delve assuming any m with a procid of 0 is the main thread of the process (due to how theGo runtime allocates M's, only `clone`d threads have procid properly set. This causes certain events (like `next`) to happen twice to the main thread, because 2 m's in `runtime.allm` have a `procid` of 0, and also causes various other issues that prevent proper thread coordination from Delve.

Fixes #43
2015-02-01 13:45:20 -05:00
Derek Parker
4f5bfc5ee8 Handle clearing HW breakpoints properly 2015-01-31 20:43:48 -06:00
Ellery D'Souza
d4097e3be9 Fixed missing header file "sys/types.h" to fix compiler error 2015-01-26 15:10:21 -06:00
Paul Sbarra
58de1f7c85 migrate to go.sys subrepository
As of go version 1.4 the standard library syscall package is "locked
down" and code outside of the standard library is recommended to migrate
to the go.sys subrepository.

Reference: https://golang.org/s/go1.4-syscall
2015-01-25 22:43:47 -06:00
Michael Gehring
0d08380555 Fix PtracePeekUser 2015-01-25 21:57:56 +01:00
Michael Gehring
2a66ecb10b Some hw breakpoint fixes
Enable usage of dr1-dr3.  Clear control bits when a breakpoint
is disabled. Use DR_LEN_1 instead of DR_LEN_8 so breakpoint work on
unaligned adresses.

Fixes #51.
2015-01-24 11:10:42 +01:00
Derek Parker
ff789d1df6 Update error message for missing .debug_frame 2015-01-23 14:59:42 -06:00
epipho
d7e535f25b Dont panic if .debug_frame section is not found. Log and exit 2015-01-23 14:57:31 -06:00
Ivar Gaitan
d9c3488f12 Report caller file:line in assert helper fn 2015-01-23 14:55:24 -06:00
Paul Nasrat
46e5cfd399 proctl: propagate underlying error for failing hardware breakpoint.
Improves error message on systems that delve is failing on.
2015-01-22 17:10:48 -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
Derek Parker
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
Derek Parker
87c3b0a7d3 Minor syntax cleanup 2015-01-14 17:43:34 -06:00
Derek Parker
ecacbc8a40 Remove bonus comment 2015-01-14 17:40:52 -06:00
Derek Parker
fa62905a7e Remove slight duplication 2015-01-14 17:36:35 -06:00
Derek Parker
bcc4943abd Move breakpointIDCounter to DebuggedProcess struct 2015-01-14 09:01:36 -06:00
Derek Parker
d7cb4dcaca Remove parseProcessStatus and only report stop
Currently there is no need for the other items in the ProcessStatus
struct, we really only care if the process is not running, so we can
avoid sending signals to it.
2015-01-14 08:58:32 -06:00
Derek Parker
fbbe9aaa5e Implement usage of hardware breakpoints
Currently only works for amd64 processors.
2015-01-12 21:56:25 -06:00
Derek Parker
c0ae1ee1c6 Remove erroneous fmt.Println calls 2015-01-10 14:33:49 -06:00
Derek Parker
bc39ddfbbc Handle SIGINT
Handle SIGINT by stopping the traced program and then displaying a
prompt to the user for commands. If the traced process is not running,
this is a noop.

Closes #30
2015-01-09 16:24:33 -06:00
Derek Parker
6acb912a0c Minor comment cleanup 2015-01-02 10:09:32 -06: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
Derek Parker
eed50f3e52 Kill newline 2015-01-01 12:35:03 -06:00
epipho
709347512c Breakpoints now have ids. Consolidated location lookup logic 2015-01-01 08:23:55 -05:00
Derek Parker
1289f38f87 kill whitespace 2014-12-31 15:54:52 -06:00
epipho
2c5527c6c9 Refactor member variable evaluation so it works in all cases 2014-12-31 16:20:26 -05:00
epipho
ed6d4049b6 Extracting common dwarf reader functionality into its own area 2014-12-31 11:46:58 -06:00
epipho
c0fd1a0295 Refactor extractValue so OP_DW_addr will work 2014-12-31 02:41:25 -05:00
epipho
07940dc59e Added info locals and info args commands 2014-12-30 12:58:44 -05:00
Derek Parker
cc8563a2a2 Remove unnecessary type conversion 2014-12-30 09:23:22 -06:00
Derek Parker
849a201d4a Extract function to set slice len 2014-12-29 21:05:22 -06:00
Derek Parker
4dce356497 Slight improvement for readIntSlice 2014-12-29 20:59:52 -06:00
Derek Parker
d7684de92d Use ptrsize instead of assuming 2014-12-29 17:04:08 -06:00
Derek Parker
46be509d6a Improve array type output 2014-12-29 16:59:41 -06: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
9e8ac82104 Minor refactoring / code cleanup 2014-12-28 20:48:58 -06:00
Derek Parker
04da3fcbc8 Don't assume pointer size 2014-12-19 23:10:32 -06:00
Derek Parker
8e40467c95 Use ByteSize for reading string size 2014-12-19 23:10:32 -06:00
Derek Parker
2d21cad8dc Support Go1.4rc1 2014-12-10 22:31:12 -06:00
Derek Parker
e0738c417c Remove helper file & further isolate linux code 2014-12-09 10:51:17 -06:00
Derek Parker
813340abe6 Remove erroneous stuff from helper package 2014-12-09 10:35:55 -06:00
Derek Parker
12949e3406 Remove linux build requirement on variables source file 2014-12-08 22:33:52 -06:00
Derek Parker
460bedf4f4 Use generic ReadMemory isntead of Ptrace 2014-12-08 22:31:51 -06:00
Derek Parker
e784e5d56d Isolate linux specific memory reading in threads file 2014-12-08 17:56:02 -06:00
Derek Parker
e299dfde08 Isolate linux specific register getters / setters 2014-12-08 17:54:34 -06:00
Derek Parker
64e01bfed1 Begin thread code isolation 2014-12-08 17:40:59 -06:00
Derek Parker
d41bbbf5c3 Further isolate Linux specific code 2014-12-08 17:15:52 -06:00
Derek Parker
2ecf625c5b Remove unused struct member 2014-12-08 12:15:08 -06:00
Derek Parker
53ae81291b Isolate proctl_*.go linux specific code 2014-12-05 16:17:10 -06:00
Derek Parker
1b819915fd Remove unused function 2014-12-05 12:39:54 -06:00
Derek Parker
f8bb5acc9b Return more meaningful errors 2014-12-04 15:26:53 -06:00
Derek Parker
d14183a2a2 Fix: do not always use pid thread for clearing bp
Since fixing scheduler handling bugs, a new bug was exposed where Step
was calling Clear off of the DebuggedProcess struct. This is incorrect,
 and should be handled by the thread itself and not delegated.
2014-12-04 15:04:48 -06:00