trepanning 0.0.6 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/ChangeLog +214 -0
  2. data/NEWS +12 -0
  3. data/README.textile +1 -7
  4. data/Rakefile +13 -0
  5. data/app/default.rb +5 -4
  6. data/app/disassemble.rb +25 -3
  7. data/app/run.rb +0 -18
  8. data/bin/trepan +4 -6
  9. data/data/irbrc +3 -17
  10. data/io/base_io.rb +3 -1
  11. data/io/null_output.rb +41 -0
  12. data/lib/trepanning.rb +10 -13
  13. data/processor/command/backtrace.rb +7 -6
  14. data/processor/command/base/subcmd.rb +4 -0
  15. data/processor/command/base/submgr.rb +1 -1
  16. data/processor/command/base/subsubmgr.rb +1 -1
  17. data/processor/command/break.rb +12 -4
  18. data/processor/command/continue.rb +2 -2
  19. data/processor/command/delete.rb +1 -1
  20. data/processor/command/disable.rb +1 -1
  21. data/processor/command/disassemble.rb +1 -1
  22. data/processor/command/finish.rb +3 -3
  23. data/processor/command/info_subcmd/iseq.rb +9 -0
  24. data/processor/command/info_subcmd/registers_subcmd/dfp.rb +7 -16
  25. data/processor/command/info_subcmd/registers_subcmd/lfp.rb +5 -17
  26. data/processor/command/info_subcmd/registers_subcmd/pc.rb +6 -19
  27. data/processor/command/info_subcmd/registers_subcmd/sp.rb +14 -24
  28. data/processor/command/list.rb +34 -19
  29. data/processor/command/reload.rb +1 -1
  30. data/processor/command/restart.rb +8 -9
  31. data/processor/command/set_subcmd/auto.rb +1 -2
  32. data/processor/command/set_subcmd/auto_subcmd/eval.rb +6 -19
  33. data/processor/command/set_subcmd/auto_subcmd/irb.rb +7 -23
  34. data/processor/command/set_subcmd/auto_subcmd/list.rb +5 -22
  35. data/processor/command/set_subcmd/basename.rb +6 -20
  36. data/processor/command/set_subcmd/debug.rb +1 -1
  37. data/processor/command/set_subcmd/debug_subcmd/dbgr.rb +9 -22
  38. data/processor/command/set_subcmd/debug_subcmd/except.rb +8 -20
  39. data/processor/command/set_subcmd/debug_subcmd/macro.rb +7 -19
  40. data/processor/command/set_subcmd/debug_subcmd/skip.rb +5 -18
  41. data/processor/command/set_subcmd/debug_subcmd/stack.rb +5 -18
  42. data/processor/command/set_subcmd/hidelevel.rb +60 -0
  43. data/processor/command/set_subcmd/max.rb +1 -1
  44. data/processor/command/set_subcmd/max_subcmd/list.rb +12 -23
  45. data/processor/command/set_subcmd/max_subcmd/stack.rb +8 -31
  46. data/processor/command/set_subcmd/substitute.rb +1 -1
  47. data/processor/command/set_subcmd/substitute_subcmd/eval.rb +1 -1
  48. data/processor/command/set_subcmd/substitute_subcmd/path.rb +1 -1
  49. data/processor/command/set_subcmd/substitute_subcmd/string.rb +6 -18
  50. data/processor/command/set_subcmd/timer.rb +1 -1
  51. data/processor/command/set_subcmd/trace.rb +1 -1
  52. data/processor/command/set_subcmd/trace_subcmd/buffer.rb +1 -1
  53. data/processor/command/set_subcmd/trace_subcmd/print.rb +5 -21
  54. data/processor/command/set_subcmd/trace_subcmd/var.rb +1 -1
  55. data/processor/command/show_subcmd/args.rb +9 -27
  56. data/processor/command/show_subcmd/auto_subcmd/eval.rb +3 -15
  57. data/processor/command/show_subcmd/auto_subcmd/irb.rb +3 -15
  58. data/processor/command/show_subcmd/auto_subcmd/list.rb +3 -18
  59. data/processor/command/show_subcmd/basename.rb +3 -1
  60. data/processor/command/show_subcmd/hidelevel.rb +41 -0
  61. data/processor/command/show_subcmd/max.rb +1 -1
  62. data/processor/command/show_subcmd/trace_subcmd/buffer.rb +1 -1
  63. data/processor/command/show_subcmd/trace_subcmd/print.rb +1 -1
  64. data/processor/command/source.rb +6 -5
  65. data/processor/command/undisplay.rb +0 -1
  66. data/processor/default.rb +6 -2
  67. data/processor/frame.rb +2 -21
  68. data/processor/location.rb +44 -18
  69. data/processor/main.rb +0 -11
  70. data/processor/mock.rb +25 -0
  71. data/processor/validate.rb +34 -18
  72. data/test/functional/fn_helper.rb +14 -4
  73. data/test/functional/test-break.rb +35 -73
  74. data/test/functional/test-condition.rb +9 -10
  75. data/test/functional/test-delete.rb +5 -3
  76. data/test/unit/test-app-disassemble.rb +15 -3
  77. data/test/unit/test-app-run.rb +0 -4
  78. data/test/unit/test-cmd-break.rb +3 -0
  79. metadata +15 -11
@@ -32,7 +32,7 @@ module FnTestHelper
32
32
 
33
33
  unless defined?(TREPAN_PROMPT)
34
34
  TREPAN_PROMPT = /^\(trepan\): /
35
- TREPAN_LOC = /.. \(.+:\d+\)/
35
+ TREPAN_LOC = /.. \(.+:\d+( @\d+)?\)/
36
36
  end
37
37
 
38
38
  # Return the caller's line number
@@ -79,7 +79,17 @@ module FnTestHelper
79
79
  # becomes:
80
80
  # --
81
81
  a2 = a.map do |s|
82
- s =~ TREPAN_LOC ? s.gsub(/\(.+:\d+\)\n/, '').chomp : s.chomp
82
+ s =~ TREPAN_LOC ? s.gsub(/\(.+:\d+( @\d+)?\)\n/, '').chomp : s.chomp
83
+ end
84
+
85
+ # Canonicalize breakpoint messages.
86
+ # For example:
87
+ # Set breakpoint 1: test/functional/test-tbreak.rb:10 (@0)
88
+ # becomes :
89
+ # Set breakpoint 1: foo.rb:55 (@3)
90
+ a3 = a2.map do |s|
91
+ s.gsub(/^Breakpoint (\d+) set at line (\d+) in file .+,/,
92
+ 'Breakpoint \1 set at line 55 in file foo.rb,')
83
93
  end
84
94
 
85
95
  # Remove VM offset locations.
@@ -87,10 +97,10 @@ module FnTestHelper
87
97
  # VM offset 2 of instruction sequence "block in compare_output".
88
98
  # becomes
89
99
  # VM offset 55 of instruction sequence "block in compare_output".
90
- a3 = a2.map do |s|
100
+ a4 = a3.map do |s|
91
101
  s.gsub(/VM offset \d+/, 'VM offset 55')
92
102
  end
93
- return a3
103
+ return a4
94
104
  end
95
105
 
96
106
  end
@@ -1,87 +1,49 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'test/unit'
3
- require 'trace'
4
3
  require_relative 'fn_helper'
5
- require_relative '../../app/breakpoint'
6
4
 
7
- class TestBreak < Test::Unit::TestCase
5
+ class TestBreak2 < Test::Unit::TestCase
8
6
 
9
7
  include FnTestHelper
10
8
 
11
- def setup
12
- Trepanning::Breakpoint::reset
13
- end
14
-
15
- def test_break_same_level
16
-
17
- # See that we can stop at a breakpoint
18
- cmds = ['set basename on',
19
- 'break ' + (__LINE__ + 7).to_s,
20
- 'continue']
9
+ def test_line_only_break
10
+ # Check that we can set breakpoints in parent, sibling and children
11
+ # of sibling returns. We have one more 'continue' than we need
12
+ # just in case something goes wrong.
13
+ cmds_pat = ((['break %d'] * 3) + (%w(continue) * 4)).join("\n")
14
+ line = __LINE__
15
+ cmds = (cmds_pat % [line, line+11, line+14]).split(/\n/)
21
16
  d = strarray_setup(cmds)
22
- d.start
23
- ########### b1 ###############
24
- x = 5
25
- y = 6
26
- z = 7
27
17
  ##############################
28
- d.stop
29
- out = ['-- ',
30
- 'x = 5',
31
- 'basename is on.',
32
- "Breakpoint 1 set at line 26 in file test-break.rb,\n" +
33
- "\tVM offset 55 of instruction sequence \"test_break_same_level\".",
34
- 'xx ',
35
- 'z = 7']
36
- compare_output(out, d, cmds)
37
-
38
- # Try a disabling the breakpoint
39
- cmds = ['set basename on',
40
- 'break ' + (__LINE__ + 8).to_s,
41
- 'break ' + (__LINE__ + 8).to_s,
42
- 'disable 1',
43
- 'continue']
44
- d = strarray_setup(cmds)
45
- d.start
46
- ########### b2 ###############
47
- x = 7
48
- y = 8
49
- z = 8+1
18
+ def foo # line + 4
19
+ a = 5 # line + 5
20
+ b = 6 # line + 6
21
+ end # line + 7
22
+ 1.times do # line + 8
23
+ d.start # line + 9
24
+ 1.times do # line + 10
25
+ x = 11 # line + 11
26
+ foo # line + 12
27
+ end # line + 13
28
+ c = 14 # line + 14
29
+ end
50
30
  ##############################
51
- d.stop
52
- out = ['-- ',
53
- 'x = 7',
54
- 'basename is on.',
55
- "Breakpoint 1 set at line 48 in file test-break.rb,\n" +
56
- "\tVM offset 55 of instruction sequence \"test_break_same_level\".",
57
- "Breakpoint 2 set at line 49 in file test-break.rb,\n" +
58
- "\tVM offset 55 of instruction sequence \"test_break_same_level\".",
59
- "Breakpoint 1 disabled.",
60
- 'xx ',
61
- 'z = 8+1']
31
+ d.stop # ({:remove => true})
32
+ out = ["-- ",
33
+ "1.times do # line + 10",
34
+ "Breakpoint 1 set at line 55 in file foo.rb,
35
+ \tVM offset 55 of instruction sequence \"test_line_only_break\".",
36
+ "Breakpoint 2 set at line 55 in file foo.rb,
37
+ \tVM offset 55 of instruction sequence \"block (2 levels) in test_line_only_break\".",
38
+ "Breakpoint 3 set at line 55 in file foo.rb,
39
+ \tVM offset 55 of instruction sequence \"block in test_line_only_break\".",
40
+ "xx ",
41
+ "x = 11 # line + 11",
42
+ "xx ",
43
+ "c = 14 # line + 14"]
62
44
  compare_output(out, d, cmds)
63
-
64
- # Stepping after a breakpoint should not stay at same location.
65
- cmds = ['set basename on',
66
- 'continue ' + (__LINE__ + 8).to_s,
67
- 'continue']
68
- dbg = strarray_setup(cmds)
69
- dbg.start
70
- ########### b3 ###############
71
- a = 1
72
- b = 2
73
- c = 3
74
- d = 4
75
- e = 5
76
- ##############################
77
- dbg.stop
78
- out = ['-- ',
79
- 'a = 1',
80
- 'basename is on.',
81
- 'xx ',
82
- 'd = 4' ]
83
- compare_output(out, dbg, cmds)
84
45
  end
85
-
46
+
86
47
  end
87
48
 
49
+
@@ -27,9 +27,8 @@ class TestBreak < Test::Unit::TestCase
27
27
  out = ['-- ',
28
28
  'x = 6',
29
29
  'basename is on.',
30
- "Breakpoint 1 set at line #{__LINE__-7} in file #{file},\n" +
31
- "\tVM offset 55 of instruction sequence \"test_condition\"."
32
- ]
30
+ "Breakpoint 1 set at line 55 in file foo.rb,
31
+ \tVM offset 55 of instruction sequence \"test_condition\"."]
33
32
  compare_output(out, d, cmds)
34
33
 
35
34
  # Try a condition that fails
@@ -45,13 +44,13 @@ class TestBreak < Test::Unit::TestCase
45
44
  z = 8
46
45
  ##############################
47
46
  d.stop
48
- out = ['-- ',
49
- 'x = 6',
50
- 'basename is on.',
51
- "Breakpoint 1 set at line #{__LINE__-7} in file #{file},\n" +
52
- "\tVM offset 55 of instruction sequence \"test_condition\".",
53
- 'xx ',
54
- 'y = 7']
47
+ out = ["-- ",
48
+ "x = 6",
49
+ "basename is on.",
50
+ "Breakpoint 1 set at line 55 in file foo.rb,
51
+ \tVM offset 55 of instruction sequence \"test_condition\".",
52
+ "xx ",
53
+ "y = 7"]
55
54
  compare_output(out, d, cmds)
56
55
  end
57
56
 
@@ -29,7 +29,7 @@ class TestDelete < Test::Unit::TestCase
29
29
  out = ['-- ',
30
30
  'va = 1',
31
31
  'basename is on.',
32
- "Breakpoint 1 set at line #{__LINE__-8} in file test-delete.rb,\n\tVM offset 55 of instruction sequence \"test_delete\".",
32
+ "Breakpoint 1 set at line 55 in file foo.rb,\n\tVM offset 55 of instruction sequence \"test_delete\".",
33
33
  "Deleted breakpoint 1."]
34
34
  compare_output(out, d, cmds)
35
35
 
@@ -57,8 +57,10 @@ class TestDelete < Test::Unit::TestCase
57
57
  "va = 1",
58
58
  "basename is on.",
59
59
  "Evaluation of unrecognized debugger commands is on.",
60
- "Breakpoint 1 set at line #{__LINE__-10} in file test-delete.rb,\n\tVM offset 55 of instruction sequence \"test_delete\".",
61
- "Breakpoint 2 set at line #{__LINE__-9} in file test-delete.rb,\n\tVM offset 55 of instruction sequence \"test_delete\".",
60
+ "Breakpoint 1 set at line 55 in file foo.rb,
61
+ \tVM offset 55 of instruction sequence \"test_delete\".",
62
+ "Breakpoint 2 set at line 55 in file foo.rb,
63
+ \tVM offset 55 of instruction sequence \"test_delete\".",
62
64
  "Deleted breakpoint 1.",
63
65
  "xx ",
64
66
  "vd = 4",
@@ -50,11 +50,23 @@ local table (size: 6, argc: 1 [opts: 0, rest: -1, post: 0, block: -1] s1)
50
50
  def test_disassemble_split
51
51
  expect = {
52
52
  0=>
53
- "0000 trace 8 ( 26)",
53
+ '0000 trace 8 ( 26)',
54
54
  2=>
55
- "0002 trace 1 ( 27)",
56
- 4=>"0004 putnil "
55
+ '0002 trace 1 ( 27)',
56
+ 4=>'0004 putnil '
57
57
  }
58
58
  assert_equal(expect, disassemble_split(@dis_string))
59
59
  end
60
+
61
+ # Test shortening lines via setting the maxwidth parameter
62
+ def test_shorten_dissassembly
63
+ ary = mark_disassembly(@dis_string, false, 2, [], 70)
64
+ assert_equal([
65
+ ' 0000 trace 8 ( 26)',
66
+ ' 0002 trace 1 ( 27)',
67
+ ' 0004 putnil '],
68
+ ary[3..-1])
69
+ end
70
+
71
+
60
72
  end
@@ -10,10 +10,6 @@ class TestAppRun < Test::Unit::TestCase
10
10
  assert_equal(true, File.executable?(ng) || ng == 'probably-does-not-exist')
11
11
  rp = ruby_path
12
12
  assert_equal(true, File.executable?(rp))
13
- tup = explicit_restart_argv(ARGV)
14
- assert_equal(rp, tup[0])
15
- assert_equal(true, File.readable?(tup[1]))
16
- assert_equal(ARGV.size + 2, tup.size)
17
13
  end
18
14
 
19
15
  end
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'test/unit'
3
3
  require 'thread_frame'
4
+ require 'fileutils' # To test FileUtils.cp
5
+
4
6
  require_relative 'cmd-helper'
5
7
 
6
8
  class TestCommandBreak < Test::Unit::TestCase
@@ -28,6 +30,7 @@ class TestCommandBreak < Test::Unit::TestCase
28
30
  pc_offset = tf.pc_offset
29
31
  [[@name],
30
32
  [@name, "O#{pc_offset}"],
33
+ #[@name, 'FileUtils.cp']
31
34
  ].each_with_index do |args, i|
32
35
  @my_cmd.run(args)
33
36
  assert_equal(true, @cmdproc.errmsgs.empty?, @cmdproc.errmsgs)
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 6
9
- version: 0.0.6
8
+ - 8
9
+ version: 0.0.8
10
10
  platform: ruby
11
11
  authors:
12
12
  - R. Bernstein
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-27 00:00:00 -04:00
17
+ date: 2010-12-10 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -27,8 +27,8 @@ dependencies:
27
27
  - !ruby/object:Gem::Version
28
28
  segments:
29
29
  - 0
30
- - 33
31
- version: "0.33"
30
+ - 34
31
+ version: "0.34"
32
32
  type: :runtime
33
33
  version_requirements: *id001
34
34
  - !ruby/object:Gem::Dependency
@@ -41,8 +41,8 @@ dependencies:
41
41
  - !ruby/object:Gem::Version
42
42
  segments:
43
43
  - 0
44
- - 2
45
- version: "0.2"
44
+ - 3
45
+ version: "0.3"
46
46
  type: :runtime
47
47
  version_requirements: *id002
48
48
  - !ruby/object:Gem::Dependency
@@ -55,7 +55,8 @@ dependencies:
55
55
  - !ruby/object:Gem::Version
56
56
  segments:
57
57
  - 0
58
- version: "0"
58
+ - 45
59
+ version: "0.45"
59
60
  type: :runtime
60
61
  version_requirements: *id003
61
62
  - !ruby/object:Gem::Dependency
@@ -130,6 +131,7 @@ files:
130
131
  - interface/base_intf.rb
131
132
  - interface/user.rb
132
133
  - io/base_io.rb
134
+ - io/null_output.rb
133
135
  - io/string_array.rb
134
136
  - io/input.rb
135
137
  - lib/trepanning.rb
@@ -160,6 +162,7 @@ files:
160
162
  - processor/command/set_subcmd/substitute.rb
161
163
  - processor/command/set_subcmd/return.rb
162
164
  - processor/command/set_subcmd/debug.rb
165
+ - processor/command/set_subcmd/hidelevel.rb
163
166
  - processor/command/set_subcmd/auto_subcmd/list.rb
164
167
  - processor/command/set_subcmd/auto_subcmd/irb.rb
165
168
  - processor/command/set_subcmd/auto_subcmd/eval.rb
@@ -242,6 +245,7 @@ files:
242
245
  - processor/command/show_subcmd/debug_subcmd/macro.rb
243
246
  - processor/command/show_subcmd/debug.rb
244
247
  - processor/command/show_subcmd/args.rb
248
+ - processor/command/show_subcmd/hidelevel.rb
245
249
  - processor/command/show_subcmd/auto_subcmd/list.rb
246
250
  - processor/command/show_subcmd/auto_subcmd/irb.rb
247
251
  - processor/command/show_subcmd/auto_subcmd/eval.rb
@@ -321,7 +325,7 @@ files:
321
325
  - test/functional/test-debugger-call-bug.rb
322
326
  - test/functional/test-delete.rb
323
327
  has_rdoc: true
324
- homepage: http://wiki.github.com/rocky/rbdbgr
328
+ homepage: http://wiki.github.com/rocky/rb-trepanning
325
329
  licenses:
326
330
  - MIT
327
331
  post_install_message:
@@ -329,13 +333,13 @@ rdoc_options:
329
333
  - --main
330
334
  - README
331
335
  - --title
332
- - Trepan 0.0.6 Documentation
336
+ - Trepan 0.0.8 Documentation
333
337
  require_paths:
334
338
  - lib
335
339
  required_ruby_version: !ruby/object:Gem::Requirement
336
340
  none: false
337
341
  requirements:
338
- - - "="
342
+ - - ~>
339
343
  - !ruby/object:Gem::Version
340
344
  segments:
341
345
  - 1