heap_dump 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -63,6 +63,32 @@ cat dump.json | sed 's/^[,\[]//;s/\]$//;s/^{"id"/{"_id"/' | mongoimport -d datab
63
63
  Note that even small dumps usually contain a few hundred thousands objects, so do not forget to add some indexes.
64
64
 
65
65
 
66
+ ### Output example/format
67
+
68
+ Format is not stable yet, but looks like this:
69
+
70
+ ```json
71
+
72
+ [{"id":"_ROOTS_","stack_and_registers":[70313628419480,70313628419480,70313628419480,"trace",70313627751860],"classes":[70313627319820,70313628530860]}
73
+ ,{"id":70365602702620,"bt":"T_ARRAY","val":[">=",70365602705060]}
74
+ ,{"id":70365602847060,"bt":"T_ARRAY","val":[]}
75
+ ,{"id":70365602702660,"bt":"T_DATA","type_name":"iseq","size":564,"name":"activate_spec","filename":"/Users/vasfed/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb","line":485,"type":"method","refs_array_id":70365602847060,"coverage":null,"klass":70365602821240,"cref_stack":70365602848300,"defined_method_id":12672}
76
+ ,{"id":70365602702680,"bt":"T_STRING","val":"activate_spec"}
77
+ ,{"id":70365602821260,"bt":"T_HASH","val":{"EXEEXT":"","RUBY_SO_NAME":"ruby.1.9.1","arch":"x86_64-darwin11.2.0","bindir":70365603049640,"libdir":70365603050600,"ruby_install_name":"ruby","ruby_version":"1.9.1","rubylibprefix":70365603112080,"sitedir":70365603112440,"sitelibdir":70365603048920,"datadir":70365603049880,"vendordir":70365603112500,"vendorlibdir":70365603048800}}
78
+ ,{"id":70365602712560,"bt":"T_CLASS","name":"URI::HTTPS","methods":{},"ivs":{"__classpath__":"URI::HTTPS","DEFAULT_PORT":443},"super":70365602771440}
79
+ ,{"id":70365602771400,"bt":"T_CLASS","name":"Class","methods":{"build":70365602782860},"ivs":{"__attached__":70365602771440},"super":70365611597900}
80
+ ,{"id":70365602717060,"bt":"T_DATA","type_name":"proc","size":72,"is_lambda":0,"blockprocval":null,"envval":70365602712440,"iseq":{"id":70365600821896,"name":"block in <class:FileList>","filename":"/Users/vasfed/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/file_list.rb","line":743,"type":"block","refs_array_id":70365611724600,"coverage":null,"klass":null,"cref_stack":70365611799480,"defined_method_id":0}}
81
+ ,{"id":70365603045160,"bt":"T_DATA","type_name":"VM/env","size":128,"refs":[]}
82
+ ,{"id":70365613258980,"bt":"T_ICLASS","name":"Object","methods":{"==":"(CFUNC)",">":"(CFUNC)",">=":"(CFUNC)","<":"(CFUNC)","<=":"(CFUNC)","between?":"(CFUNC)"},"ivs":{"__classid__":"Comparable"},"super":70365613259120}
83
+ ]
84
+ ```
85
+ etc.
86
+
87
+ bt field is ruby builtin type name.
88
+
89
+ Where available - val/refs/ivs/etc. field present with hash/array of references.
90
+ Long numbers usually are object ids.
91
+
66
92
  ## Contributing
67
93
 
68
94
  1. Fork it
data/Rakefile CHANGED
@@ -7,6 +7,7 @@ Rake::ExtensionTask.new('heap_dump')
7
7
 
8
8
  desc "Simple dump test,just to check if extension compiles and does not segfault on simple dump"
9
9
  task :test => :compile do
10
+ require "bundler/setup"
10
11
  require 'heap_dump'
11
12
  puts "Dumping..."
12
13
  HeapDump.dump
@@ -597,7 +597,7 @@ static void dump_data_if_known(VALUE obj, walk_ctx_t *ctx){
597
597
  int i = 0;
598
598
  yg_cstring("refs");
599
599
  yajl_gen_array_open(ctx->yajl);
600
- for(; i > env->env_size; i++)
600
+ for(; i < env->env_size; i++)
601
601
  yg_id(env->env[i]);
602
602
  yajl_gen_array_close(ctx->yajl);
603
603
  return;
@@ -1258,6 +1258,7 @@ void heapdump_dump(const char* filename){
1258
1258
 
1259
1259
  dump_machine_context(ctx);
1260
1260
  flush_yajl(ctx);
1261
+ fprintf(ctx->file, "\n");
1261
1262
 
1262
1263
  struct gc_list *list;
1263
1264
  /* mark protected global variables */
@@ -1,3 +1,3 @@
1
1
  module HeapDump
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heap_dump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-30 00:00:00.000000000Z
12
+ date: 2012-05-31 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby-internal
16
- requirement: &70110343222520 !ruby/object:Gem::Requirement
16
+ requirement: &70250067931780 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.8.5
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70110343222520
24
+ version_requirements: *70250067931780
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: yajl-ruby
27
- requirement: &70110343221760 !ruby/object:Gem::Requirement
27
+ requirement: &70250067931200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.1'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70110343221760
35
+ version_requirements: *70250067931200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake-compiler
38
- requirement: &70110343221160 !ruby/object:Gem::Requirement
38
+ requirement: &70250067930760 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70110343221160
46
+ version_requirements: *70250067930760
47
47
  description: dump ruby 1.9 heap contents
48
48
  email:
49
49
  - vasilyfedoseyev@gmail.com