better_rails_debugger 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/better_rails_debugger/group_instances_controller.rb +13 -2
- data/app/models/better_rails_debugger/trace_point_item.rb +28 -0
- data/app/views/better_rails_debugger/group_instances/backtrace.html.haml +47 -0
- data/app/views/better_rails_debugger/group_instances/objects.html.haml +1 -1
- data/config/routes.rb +1 -0
- data/lib/better_rails_debugger/analyzer.rb +2 -2
- data/lib/better_rails_debugger/parser/ruby/processor.rb +2 -1
- data/lib/better_rails_debugger/trace_object_creation.rb +0 -0
- data/lib/better_rails_debugger/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea3a9d9773c3f101fbaa62fa6dd94985659130a6
|
4
|
+
data.tar.gz: 903218eabd2eb38c22f7de79e40492d4c437872c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2db324f05660210cefc57bfd68e2c98c97d6bd3c062db6d83ea74ca9657adcbb7293802c1dc8278c12ecfe19ff127787797f3127152ced4fc9f3ed54bc1ac0cc
|
7
|
+
data.tar.gz: 0f8cfa858d131b602e1f44b041e1bbfb25ac3af06e0a07cc3703c0e101ec52c60dad71bbe8bd046486bb80e18d5147f0bd8125efc3a091d41ff5630b86da5d1c
|
@@ -29,7 +29,7 @@ module BetterRailsDebugger
|
|
29
29
|
|
30
30
|
def objects
|
31
31
|
begin
|
32
|
-
|
32
|
+
@instance = GroupInstance.find params[:id]
|
33
33
|
rescue Mongoid::Errors::DocumentNotFound
|
34
34
|
redirect_to analysis_groups_path, flash: {error: 'Instance not found'}
|
35
35
|
return
|
@@ -43,7 +43,7 @@ module BetterRailsDebugger
|
|
43
43
|
|
44
44
|
def code
|
45
45
|
begin
|
46
|
-
|
46
|
+
@object = ObjectInformation.find(params[:object_id])
|
47
47
|
rescue Mongoid::Errors::DocumentNotFound
|
48
48
|
redirect_to group_instance_path(params[:id]), flash: {error: 'Object not found'}
|
49
49
|
return
|
@@ -55,6 +55,17 @@ module BetterRailsDebugger
|
|
55
55
|
render plain: formatter.format(lexer.lex(@object.source_code || ""))
|
56
56
|
end
|
57
57
|
|
58
|
+
def backtrace
|
59
|
+
begin
|
60
|
+
@instance = GroupInstance.find params[:id]
|
61
|
+
rescue Mongoid::Errors::DocumentNotFound
|
62
|
+
redirect_to analysis_groups_path, flash: {error: 'Instance not found'}
|
63
|
+
return
|
64
|
+
end
|
65
|
+
@backtraces = ::BetterRailsDebugger::TracePointItem.backtraces_for(params[:id], params[:file], params[:line].to_i)
|
66
|
+
pp @backtraces
|
67
|
+
end
|
68
|
+
|
58
69
|
private
|
59
70
|
def filter_objects
|
60
71
|
if ['asc', 'desc'].include? params[:order] and ['location', 'memsize', 'class'].include? params[:column]
|
@@ -7,5 +7,33 @@ module BetterRailsDebugger
|
|
7
7
|
field :source_file, type: String
|
8
8
|
field :source_line, type: Integer
|
9
9
|
field :method_id, type: String
|
10
|
+
field :event, type: String
|
11
|
+
|
12
|
+
def to_s
|
13
|
+
"#{source_file}:#{source_line}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.backtraces_for(group_instance_id, file, line)
|
17
|
+
|
18
|
+
backtraces = []
|
19
|
+
last_source = ::BetterRailsDebugger::TracePointItem.where(group_instance_id: group_instance_id).first
|
20
|
+
current_backtrace = []
|
21
|
+
current_backtrace_sources = []
|
22
|
+
::BetterRailsDebugger::TracePointItem.where(group_instance_id: group_instance_id).to_a[1..-1].each do |bkt|
|
23
|
+
if bkt.source_file == file and bkt.source_line == line
|
24
|
+
backtraces.push current_backtrace.dup.concat([[file, line, bkt.method_id]])
|
25
|
+
# When we detect that we change the file and is not a method return (back to an old source file)
|
26
|
+
elsif bkt.source_file != last_source.source_file and (bkt.event.to_s == 'call' or bkt.event.to_s == 'c_call')
|
27
|
+
current_backtrace.push([last_source.source_file, last_source.source_line, last_source.method_id])
|
28
|
+
current_backtrace_sources.push last_source.source_line
|
29
|
+
elsif bkt.source_file != last_source.source_file and (bkt.event.to_s == 'return' or bkt.event.to_s == 'c_return')
|
30
|
+
current_backtrace.pop
|
31
|
+
current_backtrace_sources.pop
|
32
|
+
end
|
33
|
+
last_source = bkt
|
34
|
+
end
|
35
|
+
|
36
|
+
backtraces.uniq
|
37
|
+
end
|
10
38
|
end
|
11
39
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
.card
|
2
|
+
.card-header
|
3
|
+
= @instance.identifier
|
4
|
+
= "-"
|
5
|
+
= @instance.created_at.strftime("%c")
|
6
|
+
.card-body
|
7
|
+
|
8
|
+
- content_for :header_nav do
|
9
|
+
%ul.nav.navbar-nav.d-md-down-none
|
10
|
+
%li.nav-item
|
11
|
+
%a.nav-link.navbar-toggler.sidebar-toggler{:href => "#"} ☰
|
12
|
+
%li.nav-item.px-3
|
13
|
+
%a.nav-link{:href => group_instance_path(@instance)} List
|
14
|
+
|
15
|
+
%ul.navbar-nav.ml-md-auto
|
16
|
+
|
17
|
+
|
18
|
+
- content_for :breadcrum do
|
19
|
+
%ol.breadcrumb
|
20
|
+
%li.breadcrumb-item
|
21
|
+
%a{:href => analysis_groups_path} Analysis Groups
|
22
|
+
%li.breadcrumb-item
|
23
|
+
%a{:href => analysis_group_path(@instance.analysis_group.id)}= @instance.analysis_group.name
|
24
|
+
%li.breadcrumb-item
|
25
|
+
%a{:href => group_instance_path(@instance)}= @instance.identifier
|
26
|
+
%li.breadcrumb-item.active
|
27
|
+
%a{:href => "#"}
|
28
|
+
Backtrace for
|
29
|
+
= "#{params[:file]}:#{params[:line]}"
|
30
|
+
|
31
|
+
%h2 Backtraces list
|
32
|
+
- @backtraces.each do |backtrace|
|
33
|
+
%table.table.border.border-secondary.border-top-0
|
34
|
+
%thead.bg-secondary.text-white
|
35
|
+
%tr.d-flex
|
36
|
+
%th.col-8= order_link "Location", 'location', @instance
|
37
|
+
|
38
|
+
%tbody
|
39
|
+
- backtrace.each do |item|
|
40
|
+
%tr.d-flex
|
41
|
+
%td.col-12
|
42
|
+
%span.text-primary
|
43
|
+
= item[0]
|
44
|
+
%span= ":"
|
45
|
+
%span.text-success= item[1]
|
46
|
+
\#
|
47
|
+
%span.text-warning= item[2]
|
@@ -61,7 +61,7 @@
|
|
61
61
|
%td.col-8
|
62
62
|
%i.fa.fa-eye.fa-2x.text-secondary{"aria-controls" => "collapseExample", "aria-expanded" => "false", "data-toggle" => "collapse", :href => "##{object.id}"}
|
63
63
|
%span.text-primary
|
64
|
-
=object.source_file
|
64
|
+
=link_to object.source_file, backtrace_group_instance_path(@instance.id, file: object.source_file, line: object.source_line)
|
65
65
|
%span= ":"
|
66
66
|
%span.text-success=object.source_line
|
67
67
|
%td.col-2= number_to_human_size object.memsize
|
data/config/routes.rb
CHANGED
@@ -42,7 +42,7 @@ module BetterRailsDebugger
|
|
42
42
|
return @tracer if @tracer
|
43
43
|
@tracer = TracePoint.new do |tp|
|
44
44
|
# Record everything but us
|
45
|
-
@trace_point_history << {source_file: tp.path, source_line: tp.lineno, method_id: tp.method_id} if tp.path !~ /better_rails_debugger/
|
45
|
+
@trace_point_history << {source_file: tp.path, source_line: tp.lineno, method_id: tp.method_id, event: tp.event.to_s} if tp.path !~ /better_rails_debugger/
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -138,4 +138,4 @@ module BetterRailsDebugger
|
|
138
138
|
@all_valid_classes
|
139
139
|
end
|
140
140
|
end
|
141
|
-
end
|
141
|
+
end
|
@@ -19,8 +19,9 @@ module BetterRailsDebugger::Parser::Ruby
|
|
19
19
|
|
20
20
|
# Subscribe to a particular signal
|
21
21
|
# @param signal_name Symbol
|
22
|
+
# @param step Symbol May be :first_pass or :second_pass
|
22
23
|
# @param block Proc
|
23
|
-
def subscribe_signal(signal_name, &block)
|
24
|
+
def subscribe_signal(signal_name, step=:first_pass, &block)
|
24
25
|
key = SecureRandom.hex(5)
|
25
26
|
@subscriptions ||= Hash.new()
|
26
27
|
@subscriptions[signal_name] ||= Hash.new
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: better_rails_debugger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andres Jose Borek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -206,6 +206,7 @@ files:
|
|
206
206
|
- app/views/better_rails_debugger/group_instances/_memory_summary.html.haml
|
207
207
|
- app/views/better_rails_debugger/group_instances/_method_summary.html.haml
|
208
208
|
- app/views/better_rails_debugger/group_instances/_stats_summary.html.haml
|
209
|
+
- app/views/better_rails_debugger/group_instances/backtrace.html.haml
|
209
210
|
- app/views/better_rails_debugger/group_instances/objects.html.haml
|
210
211
|
- app/views/better_rails_debugger/group_instances/show.html.haml
|
211
212
|
- app/views/better_rails_debugger/group_instances/tracer.html.haml
|
@@ -230,6 +231,7 @@ files:
|
|
230
231
|
- lib/better_rails_debugger/parser/ruby/module_detector.rb
|
231
232
|
- lib/better_rails_debugger/parser/ruby/parser.rb
|
232
233
|
- lib/better_rails_debugger/parser/ruby/processor.rb
|
234
|
+
- lib/better_rails_debugger/trace_object_creation.rb
|
233
235
|
- lib/better_rails_debugger/version.rb
|
234
236
|
- lib/tasks/better_rails_debugger_tasks.rake
|
235
237
|
homepage: ''
|