Commit Graph

243 Commits

Author SHA1 Message Date
0x0dada
7327642241 Fix incorrect modes various .c files. (#7287) 2017-04-16 10:10:04 +02:00
Ren Kimura
ce5758b739 Add reverse singlestep command 'dsb' (#7116) 2017-03-25 16:00:25 +01:00
Giovanni
43532031c4 Fixes for windows and some are also global (#6936) 2017-03-08 08:49:31 +01:00
pancake
46b453b668 Fix #6704 --disable-debugger build for some platforms 2017-02-06 01:57:24 +01:00
Polshakov Dmitry
249532bf53 Add support non-numeric signal numbers in RRunProfile (#6558)
* Add support non-numeric signal numbers in RRunProfile
* Add signal util module
* Remove old `signal_resolve` implementation
2017-02-02 14:34:44 +01:00
Lars Haukli
71cc67e390 Windows debugger: Added dce command. Fixed dmm commands. (#6628)
* Use double quotes to make .dmm* work on Windows
* Fix r2pipe.cmdj('dmmj') command on Windows. Report correct path when listing modules ('dmm')
* Removed unused local variable
* Added 'dce' command for windows
* Escape backslashes for JSON output only
* Do not include r_debug_native_continue() for __CYGWIN__ builds. Removed unnecessary memset.
* Added exception for CYGWIN to not escape backslashes in path
* Escape backslashes in both file paths and map names. Use map name for 'f mod.%s' instead of file path
* Added more exceptions for CYGWIN
* Validate escaped strings
2017-02-02 13:27:39 +01:00
pancake
8a787dc787 Fix #6538 - Hack to fix the broken debugger when doing aaaa 2017-01-25 00:52:36 +01:00
leberus
82f282c629 Add: dbg.libs/unlibs for linux (#6567) 2017-01-24 20:22:36 +01:00
leberus
286ca4d0ed Add: support for dbg.follow.child option (#6525) 2017-01-18 00:40:30 +01:00
leberus
dc5be7a767 Improving debug on linux (#6435) 2017-01-11 17:39:09 +01:00
SkUaTeR
8e6be1b54b Thread list and some fixes for the w32 debugger (#6355) 2016-12-21 09:07:58 +01:00
pancake
50d73d1547 Fix a lot of memleaks, null derefs and undef behaviour thanks to clang-analyzer 2016-12-19 16:44:51 +01:00
pancake
6296f4b794 Add option to stop syscall tracing -before- the syscall is executed 2016-12-09 22:19:47 +01:00
Elia Geretto
31e8d7cb68 Fix various memory leaks (#6272)
* Fix bits_ranges memory leak in anal.c
* Fix anal->reg memory leak and prevent use after free in plugin.c
* Fix reg->allregs memory leak in reg.c
* Fix dbg->plugins memory leak in debug.c
* Fix io->plugin_default memory leak in io.c
* Fix plugin_free not deallocating plugin in bin.c
* Adapt to style guidelines
* Fix memory leak in r_bin_object_free and resolve double free
* Fix o->kv memory leak in r_bin_object_set_items
* Fix memory leak pushing arena on reg init
* Fix io->plugin_default memory leak in io.c
* Adapt to style guidelines
* Fix pfile memory leak in radare2.c
* Add braces to if in bin.c
2016-12-01 09:09:59 +01:00
Álvaro Felipe Melchor
87724384d1 added r_cons_break_{push/pop} to handle ^C better
Besides an UAF has been fixed afecting only ELF
2016-11-21 16:56:12 +01:00
SkUaTeR
20a9bbd14a Rreg fpu changes (#6191)
* test with rreg for values greater than 64
* check for redirected regs in debug reg sync
2016-11-14 23:58:29 +01:00
pancake
e3b32c58a9 Add indegree and outdegree in afi and afij 2016-10-30 12:16:46 +01:00
pancake
02950398a9 Add utf8 rune support for RCons.canvas 2016-10-21 01:24:40 +02:00
pancake
cea2c80d56 Show flags in dm, add dmq and add resolver in rnum 2016-10-16 02:34:54 +02:00
pancake
490d2a498a Fix #2571 - dcs is working again 2016-09-26 13:40:25 +02:00
saucec0de
5df82dd364 dso problem (#5825) 2016-09-22 15:31:05 +02:00
saucec0de
c908e0f818 Fixing ds in x86 (#5802)
* Fixing ds in x86
* Several updates due to new OP_TYPE
2016-09-22 13:42:06 +02:00
Jon Gentle
503b3a9e98 Reduce the requirements of dko to any reason with a signum (#5806) 2016-09-20 09:25:06 +02:00
Sven Steinbauer
2996538700 Fix #5633 - Change x == NULL to correct syntax 2016-09-19 14:44:47 +02:00
dromero
20ed81af73 Fixing debugging problems at MIPS (32bits) (#5800) 2016-09-19 02:10:43 +02:00
pancake
c0692f3e53 Revert "Fix #5472 - ds on call and jmp (#5785)"
This reverts commit 6ccc045526.
2016-09-18 23:19:52 +02:00
saucec0de
6ccc045526 Fix #5472 - ds on call and jmp (#5785) 2016-09-18 21:41:15 +02:00
pancake
cadb0bd845 Several fixes for gdb:// on avr, still wip 2016-09-13 03:31:54 +02:00
Tiago Gasiba
f0a2d8657d Add support for conditional breakpoints running r2 commands 2016-09-01 19:11:46 +02:00
Tiago Gasiba
1639113cb1 Fix swstep on x86-32 for UCALL/UJMP instructions 2016-08-28 13:56:29 +02:00
Tiago Gasiba
3a7a46441e Fix swstep on call [addr] 2016-08-27 19:19:58 +02:00
Jeffrey Crowell
0db6959c6d fixup grammar in r_debug_kill 2016-08-25 18:27:11 +00:00
Joshua J. Drake
b526aded9c Don't restore breakpoints on STEP recoil (#5583)
As the comment says, we need to pretend to satisfy the caller. For some reason
I also restored the breakpoints here. I cannot for the life of me figure out
why since it should be ok with in all cases.

For swstep=false, the step will stop right away (regardless of any breakpoints)
and thus need to remove breakpoints anyway.

For swstep=true, a breakpoint is created on the next instruction and would stop
too and thus need to remove breakpoints anyway.

So yeah, don't do this. Thanks for the report skuater!
2016-08-22 17:13:13 +02:00
Álvaro Felipe Melchor
ab3f37589c Rework previous patch 2016-07-14 22:37:33 +02:00
mttbrown
dd116c65cd fixed breakpoint size based on arch 2016-07-14 22:18:45 +02:00
Jeffrey Crowell
e65ceb5dee fix some memory leaks reported by coverity 2016-07-09 01:41:56 -04:00
skuater
39c4a0c35f some fix in windows debugger 2016-07-06 12:44:52 +03:00
Joshua J. Drake
329acd33e4 Fix #5196: Make tracepoints work again
To accomplish this, we add a new debug stop reason R_DEBUG_REASON_TRACEPOINT
and return it from r_debug_wait whenever a tracing breakpoint is hit. Then, in
r_debug_continue_kill, we recognize this state and do the old r_debug_step
trick to progress the session. Previous rework of r_debug_recoil takes care of
the heavy lifting and we continue on our way.
2016-07-02 05:14:56 +03:00
Joshua J. Drake
99678d2fe0 Fix return consistency and clarify variable naming (#5199) 2016-06-23 10:40:14 +02:00
Joshua J. Drake
722c62827b Major rework to the native debugger (esp on Linux) (#5185)
The major contribution here is completely re-worked breakpoint hit/recoil
handling. This work fixes #4907 and lays the ground work for future native
debugger improvements (multi-threading, etc).

* Give a human friendly type to enums
* Change many wait functions to return RDebugReasonType
* Better return checking (from r_debug_reg_sync, r_bp_restore)
* Optimized register synchronization
* Lots of comments and whitespace changes
* Improved inferior death detection

Handle EXIT_PID events differently than DEAD process events

* Move breakpoint/recoil handling to wait/cont/step

Rather than handing breakpoint related things inside cmd_debug.c, do that
inside the r_debug API functions. This seems like the most logical place for it
to live since it should apply to just about any platform/architecture.  This
also centralizes calling into "cmd.bp" handling via the CoreBind callback.

* Track how the caller wishes to continue

It turns out that handling break point recoils is very complicated. The ptrace
API on Linux returns SIGTRAP for just about every type of operation (not just
breakpoints getting hit). Add the "recoil_mode" flag to indicate whether we are
single-stepping or continuing and whether or not we are inside the recoil.

* Proper handling for swstep=true

Since r_debug_step_soft calls r_debug_continue, it's already hitting the recoil
case there. Move the recoil handling from r_debug_step to r_debug_step_hard
only.

For the swstep=true case, special handling is required inside r_debug_recoil.
By resetting all of the breakpoints except the one we just hit, we ensure we
can step the original instruction and hit the new swstep breakpoint. Add a new
bp function called r_bp_restore_except to do this.

To make matters worse, we cannot use a BreakpointItem pointer because that
leads to a use-after-free condition. Instead, we the breakpoint address
instead.

Now breakpoints should work regardless of the swtep setting.

* Always call the recoil before continuing

Some callers of r_debug_continue might not have ever inserted any breakpoints
before. If we don't restore breakpoints before each call to the underlying
continue we won't hit them.

* Hide software step breakpoint events from the user

When a breakpoint even happens due to a software-step, hide it from the user.
They aren't really breakpoints as far as they are concerned.

* Improve process exit handling on Linux

There are three types of process exiting events on Linux:

1. PTRACE_EVENT_EXIT occurs just before a process exits. It's not possible to
prevent it from exiting, but it can be used to inspect the pre-exit state.
2. The process can exit for a variety of reasons and we can notice when we call
waitpid(2).
3. The process could die randomly on us :-/

On Windows, h->wait will return R_DEBUG_REASON_EXIT_PID, but it's more likely
on Linux to find out the process is already dead.

* Check more bits within waitpid status

We can often make a decision about what happened strictly by looking at the
status returned from waitpid. In other cases, we need to call
r_debug_handle_signals.

If we reach the end of this function without knowing what happened, consider it
an error.
2016-06-22 10:34:45 +02:00
pancake
136d1d722d Fix #5184 - Remove useless warning message in r_debug_set_arch 2016-06-20 23:42:56 +02:00
Joshua J. Drake
16c27891a0 Switch to r_sys_perror for errors and fix two typos 2016-06-20 15:24:19 +02:00
Álvaro Felipe Melchor
564803d5c2 express db breakpoints as dbm due to ASLR 2016-06-19 14:04:23 +02:00
Joshua J. Drake
0431a0efdf Properly handle forks on Linux 2.5.46+ (#5153)
Linux 2.5.46 made changes to the ptrace(2) API to inform a tracer when various
events occur. These are known as PTRACE_EVENTs. Start handling PTRACE_EVENTs
by:

 * Handling PTRACE_EVENT_FORK and PTRACE_EVENT_EXIT
 * For _FORK, stores the newly created pid in dbg->forked_pid
 * Add the "dpc" command to select the most recently forked child process.
 * Add the "dpc*" command to show the recently forked process' pid.

Additional minor changes to white space are included.

NOTE: This partially addresses #3549. It does handleLinux before 2.5.46.
2016-06-17 04:20:18 +02:00
Joshua J. Drake
e97e011426 Have r_debug_select change IO pids too (#5145) 2016-06-16 22:56:21 +02:00
Joshua J. Drake
285cd3b32f Minor tweaks to breakpoint handling
* Fix "dbm" help string
* Save <module>+<offset> as the name when using dbm
* Fix allocation patterns for "module"
* Remove commented out code
* White space fixes
2016-06-16 12:36:17 +02:00
pancake
95b2e511f5 Fix some warnings 2016-06-01 12:23:10 +02:00
Jeffrey Crowell
1c69a920b6 rm free of iterator, fix leak 2016-05-17 23:44:14 -04:00
Álvaro Felipe Melchor
6b827c1563 Fix #4796 - Add dbm aka module relative breakpoints 2016-05-16 01:00:11 +02:00
pancake
80ea7427bb Indentation fixes around the previous commit and beyond 2016-05-15 10:40:57 +02:00