forked from mark-moseley/ruby-debug
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGES
334 lines (268 loc) · 13.6 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
0.10.3
11/17/08
- a backtrace now warns when it thinks the callstack is truncated which it
gets by comparing with caller()
- fix setting $0.
- fix bug in showing variables in post-mortem
- Document how Debugger.start with a block is intended to be used.
- Move Kernel#debugger from ruby-debug-base into ruby-debug
- Get regression tests working again
- Warn and add a "confirmation" when setting a breakpoint on a
file that is not loaded.
0.10.2
- debugger(steps=0) breaks inside of debugger rather than wait for a line event.
- trace var varname (stop|nostop) added which issues trace_var.
- start method is now properly defined in Debugger module
- fixed 'finish' command
- rdebug script now works with Ruby 1.8.7
0.10.1
4/10/08 - in honor of the 30th Birthday of Kate Schwarz
- bin/rdebug
* "rdebug --post-mortem" now really catches uncaught exceptions and
brings you to post-mortem handling. "info program" shows the exception.
* rdebug now searches using ENV['PATH'] for a Ruby program to debug
if the program name is not found and doesn't have any path
characters in it.
* Use ~/.rdboptrc (rdbopt.ini on MS Windows) to change default options.
* --emacs is now --emacs-basic while --emacs 3 now implies emacs-basic
---annotate=3 --post-mortem --no-control --no-start --no-quit
- rdebug (CLI)
* "info" command additions and changes:
o fix bug in "info variables" when string had embedded %s'
o "info program" now shows uncaught exception information
o "info files" show what Ruby files are loaded
o "info file <f>" specific file information of <f> (e.g. time, # of lines, SHA1)
o "info catch" - Exceptions that can be caught in the current stack frame.
o "info "variables" shows "self" and class variables
o "info threads verbose" shows stack trace of all threads
o "info thread <t> verbose" shows stack trace of thread <t>.
* "frame" command now accepts an optional thread number argument
* Long information added to commands with subcommands: show, set,
info, enable, and disable. For example "help info <xxx>" will give
more detailed information about the "info <xxx>" command.
* columnize now pulled in from a separate package.
* add "var cl[ass]" command. Note "var const" can no longer be
abbreviated "var c"; use "var co" (or const or constant).
* add "condition" command. Allow removal of condition.
* $0 == __FILE__ when running rdebug should work -- most of the
time. See comments in code for a better solution.
* rdebug command history can be displayed with "show commands". Fix a bug
in history saving.
* INCOMPATIBLE CHANGE: "finish" works like gdb - stop just before the most
recent method finishes. Will now accept a number which stops that many
frames completed. (Note that return line numbers will be funny, the
first line of the method until Ruby 1.8.7.)
* fix bug in 'list' command when wrapping off the end.
- Emacs interaction drastically reworked, expanded, and improved.
- rdebug base
* allow catching multiple exceptions.
INCOMPATIBLE CHANGE: variable "Debugger.catchpoint", a String, was turned
into "Debugger.catchpoints", a Hash. Method "Debugger.catchpoint=" no
longer exists. Debugger.set_catchpoint was turned into
Debugger.add_catchpoint
* Add Debugger.last_exception which is set in post-mortem.
* remove Debugger.stop() when an exception is raised that would terminate the
debugged program. This may allow catchpoints to work and allow tracing user
code which handles "Exit" exceptions
* split off breakpoint code in ruby_debug.c.
* preface ruby_debug global Ruby variables with rdebug_.
* Change Debugger.start() to accept an optional options argument
:init => true saves things (like $0 and ARGV) necessary to
allow restart. Default: true
:post_mortem => true runs post-mortem on an uncaught exception
Default: false
The old Debugger.start() is now renamed to Debugger.start_()
* split of line caching to an external gem. We now only allow setting
breakpoints on lines where it makes sense to do so.
* Incompatible enhancement: even return/end will now call event handler
See ChangeLog for full details, and the reference guide for more complete
documentation of these changes.
0.10.0
12/25/07
- '-r' option can be used to require additional libraries.
- --noquit option added to stay in debugger when the program exits
- gdb-like --annotate option added. Can be used by front-ends to get information
without polling
- Fixed 'var const' command. Issue #10847.
- Using pretty-print for all var commands.
- Better error reporting for commands that require a numeric argument.
- Fixed Kernel#binding_n method
- Add option -d ($DEBUG = true) and --verbose. Make -v work like ruby.
- Remove debugger messages caused when warnings are turned on.
- "info" and "show" commands added. "set" made more like gdb's
set. subcommands can be abbreviated and are case insensitive.
- restart program if it terminates normally and we've got a tty and
we stop on the first statement.
- help is in tidy column format. method lists are shown that way as well.
the "width" setting ("set/show width") is used for the line width
- stack traces now show parameter names and types. "info args" lists just
the parameters (with the most recent values, not the values at call time).
- post-mortem "exit" bug fixed.
- More Emacs-friendly: rdebug-track.el will track location inside an Emacs
shell. Emacs position information is shown in breakpoints and catchpoints
similar to gdba. Commands to position in another window a unit test traceback
or ruby traceback. Much more work invisioned for Emacs.
- INCOMPATIBLE CHANGE: "break" now sets a breakpoint on the current line
(same as gdb). Use "info break" for a list of breakpoints.
- INCOMPATIBLE CHANGE: "script" command removed. Use "source" command instead
(same as gdb).
- Run .rdebugrc on Debugger.start. Look for a file in the current directory and
run that instead of the one in $HOME if that exists. Again, inspired by and compatible
with gdb.
- Changes compatible with Ruby 1.9. NOTE: this debugger will NOT work with
Ruby 1.9
- leaving irb shows position same as entering debugger; "list" position
is also cleared when leaving irb
- help "foo" gives message "Undefined command "foo" rather than a list
of help commands. (Message test is gdb's)
- Add set linetrace+ - similar to step+ for linetrace
- Start unit tests.
- Start a reference guide.
0.9.3
- Fixed if..elsif..end stepping.
- From irb session Ctrl-C or 'cont' command continues execution without showing the debugger prompt.
- Added Debugger.settings method to programatically modify command settings.
- Added Kernel#breakpoint as alias to Kernel#debugger is the former is not already defined.
0.9.2
- Fixed file comparison in Windows platform.
- Added setter methods to Breakpoint properties
- Added breakpoint hit condition functionality (not available via CLI yet) and methods:
Breakpoint:hit_count
Breakpoint:hit_value[=]
Breakpoint:hit_condition[=]
0.9.1
- Fixed incorrect stack calculation.
- Context#stop_next= method aliased as Context#step.
- Added the 'force' parameter to Context#step_over.
- Added the 'force' parameter to Context#step.
- 'next+/step+' commands forces to move to another line
- Added a new 'forcestep' setting.
0.9
- Kernel#debugger method will start the debugger if it's not running.
- Added Context#stop_reason method.
- Calling a method with a block will create a new frame. This changes the behavior of 'next' command. So in order to step into a block, 'step' command must be used. That fixes bug #9629.
- Added the possibility to add a temporary context-specific breakpoint. Context#breakpoint and Context#set_breakpoint methods are added.
- 'cont' command now accepts a numerical parameter which implements 'Continue until line' behavior.
- Added new Context.frame_class method
- Added new 'framefullpath' setting.
- Added new 'frameclassname' setting.
- All Ruby's 'eval' and require/load methods create a new frame. Fixes bug #9686.
0.8.1
- Added a shortcut module 'debugger'. require "ruby-debug/debugger" will start the debugger and stop at the next line (similar to require 'debug').
- Fixed remote debugging.
0.8
- Extract the base debugger API into a separate gem (ruby-debug-base), so it will be easier to add a new interface.
- Added 'set autoirb' setting.
- Bugfixes.
0.7.5
- Fixed 'reload on' command
- 'reload on' command is removed in favor of 'set autoreload'
- rdebug will evaluate ~/.rdebugrc script on startup
0.7.4
- Added a workaround of the Ruby interpreter problem where a method created with Module#define_method
and which raises an exception doesn't trigger a :return event, this way screwing the stack trace.
- Fixed a situation of an array 'out of bounds' access.
- Fixed the help for 'where' command.
0.7.3
- Fixed a case when a frame is not popped up properly.
- Removed Context.ignore= method, since it can result with the segmentation fault error.
- Fixed the case when Context#suspend may effect the state of the thread on Context#resume
- Fixed several cases of seg faults when accessing dyna_vars structure.
0.7.2
- Fixed Context#resume (a thread should be waked up only when it was running when it was suspended).
- When handling post-mortem exception, all threads must be suspended.
0.7.1
- Fixed 'delete' command
0.7
- Eliminated explicit Frame object. Use Context.frame_[binding,file,line] instead.
- Fixed help command.
- Renamed Debugger.keep_frame_info to Debugger.keep_frame_binding
- 'eval' command is available, even when keep_frame_binding is not used.
- New 'set' command is available.
0.6.2
- Added thread lookup cache.
- Control thread is always started by rdebug script.
- Ability to specify negative frame number to frame commands. Patch from R. Bernstein.
0.6.1
- Another performance optimization.
0.6
- Added option to exclude collecting of frame bindings.
- Several performance optimizations.
0.5.4
- Added -x/--trace option to rdebug script. Patch from R. Bernstein.
- Removed a live thread reference from the context's structure avoiding memory leakage.
0.5.3
- Added Module#post_mortem_method method, which wraps any method with Debugger.post_mortem block.
- Added breakpoint id, which is not dependent on the breakpoint position in Debugger.breakpoints array.
0.5.2
- Fixes interoperability problems with rspec.
- Made 'exit' as an alias to 'quit'
- Added 'restart' command. Patch from R. Bernstein.
0.5.1
- Bugfixes.
0.5
- Added post-mortem debugging
- Added 'irb' command.
0.4.5
- Fixed debug_method when applied to setter.
- Added 'reload' command which can be used to reload source code in case it's been changed.
- Added Debugger.reload_source_on_change option (true, by default) which controls whether ruby-debug should keep
track of the source files modification times and reload them if they've been changed.
0.4.4
- Renamed Context#set_suspend and Context#clear_suspend methods to Context#suspend and Context#resume respectively.
- Context#resume method not only clears suspend flag, but also resumes the thread execution.
- Bugfixes.
0.4.3
- Added Debugger.skip method which allows escaping a block from the debugger reach.
- Bugfixes.
0.4.2
- Module#deubg_method added.
- Added rdoc.
- Bugfixes.
0.4.1
- New binding_n method for Kernel module.
- Bugfixes.
0.4
- Debugger.start method takes a block. If a block is specified, this method starts debugger, yields to the block
and stops debugger at the end.
- 'tm[ate]' command accepts a frame number now.
- 'list' command accepts on/off parameter which controls whether listing will be displayed on every stop.
- 'eval on/off' controls the evaluation of unknown command.
- Debugger reads readline history file .rdebug_hist at startup and saves it at exit.
- 'sa[ve] <file>' command can be used to save current breackpoints and catchpoint if any
- 'sc[ript] <file>' command can be used to run script file. Script files can contain only control commands.
- rdebug script accepts '--script FILE' parameter.
- thread commands are available for the control port.
0.3 (2006-08-07)
- Renamed Debugger.start_server to Debugger.start_remote.
- Debugger.start_remote activates debugger by calling Debugger.start.
- Debugger.start_remote starts a control thread which listen on port 8990 and accepts control
commands, such as adding/deleting breakpoints, assigning catchpoint, etc. (Useful for GUI integration)
- New Debugger.wait_connection option. When it's true, Debugger.start_remote waits until
a remote connection is made.
- New Debugger.stop_on_connect option. When a remote connection is established, debugger
stops the main thread (Thread.main).
- 'interrupt' command is available for the control thread.
0.2.1 (2006-07-29)
- 'f[rame] nn' command selects a numbered frame. Frame numbers can be obtained by running frame
command without parameters.
- 'l[ist] =' show code in the context of the current line.
- 'tm[ate]' opens the current file in TextMate. Available only on Mac OSX.
0.2 (2006-07-17)
- Added the remote debugging. It should be activated by calling Debugger#start_server method.
- CHANGED: In order to activate the debugger, it's not enough to require 'ruby-debug'.
Debugger#start method must be called explicitly.
- Debugger used to evaluate anything you enter as long as it's not a command. Starting from
this version the 'eval' command must be used to evaluate an expression.
0.1.5 (2006-07-13)
- Now the check for a breakpoint uses base filename of the source file.
- Removed compilation warnings when compiling with -Wall
0.1.4 (2006-07-12)
- Remembers the previous command. Invoke it by typing a carriage return
at the command prompt.
0.1.3 (2006-07-11)
- Conditional breakpoints
- Bugfixes
0.1.2 (2006-07-16)
========================
- Initial release.