thread-dump 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,6 +6,8 @@ static VALUE rb_cDumper;
6
6
  static VALUE backtrace(rb_thread_t th)
7
7
  {
8
8
  char buf[BUFSIZ];
9
+ char buf2[BUFSIZ];
10
+ char otherbuf[BUFSIZ];
9
11
  VALUE ary;
10
12
  NODE *n;
11
13
  struct FRAME *frame;
@@ -14,41 +16,29 @@ static VALUE backtrace(rb_thread_t th)
14
16
  frame = th->frame;
15
17
  ary = rb_ary_new();
16
18
 
17
- rb_ary_push(ary, rb_obj_id(th->thread));
18
-
19
19
  if (n) {
20
- snprintf(buf, BUFSIZ, "%s:%d", n->nd_file, nd_line(n));
21
- rb_ary_push(ary, rb_str_new2(buf));
22
- }
23
-
24
- /*for (; frame && (n = frame->node); frame = frame->prev) {
25
- if (frame->prev && frame->prev->last_func) {
26
- if (frame->prev->node == n) continue;
27
- snprintf(buf, BUFSIZ, "%s:%d:in `%s'",
28
- n->nd_file, nd_line(n),
29
- rb_id2name(frame->prev->last_func));
30
- }
31
- else {
20
+ if(nd_line(n) && n->nd_file){
32
21
  snprintf(buf, BUFSIZ, "%s:%d", n->nd_file, nd_line(n));
33
- }
34
- rb_ary_push(ary, rb_str_new2(buf));
35
- }*/
22
+ rb_ary_push(ary, rb_str_new2(buf));
23
+ }
24
+ }
36
25
 
37
26
  return ary;
38
27
  }
39
28
 
29
+
40
30
  static VALUE
41
31
  dump()
42
32
  {
43
33
  VALUE ary_dump;
44
34
  VALUE curr_rb_thread;
45
- struct thread* curr_thread;
46
- struct thread* th;
35
+ struct rb_thread* curr_thread;
36
+ struct rb_thread* th;
47
37
 
48
38
  ary_dump = rb_ary_new();
49
39
 
50
40
  curr_rb_thread = rb_thread_current();
51
- Data_Get_Struct(curr_rb_thread, struct thread, curr_thread);
41
+ Data_Get_Struct(curr_rb_thread, struct rb_thread, curr_thread);
52
42
 
53
43
  if (curr_thread) {
54
44
  FOREACH_THREAD_FROM(curr_thread, th) {
@@ -66,5 +56,7 @@ Init_thread_dumper()
66
56
  {
67
57
  rb_mThreadDump = rb_define_module("ThreadDump");
68
58
  rb_cDumper = rb_define_class_under(rb_mThreadDump, "Dumper", rb_cObject);
69
- rb_define_method(rb_cDumper, "dump", dump, 0);
59
+ rb_define_singleton_method(rb_cDumper, "dump", dump, 0);
70
60
  }
61
+
62
+
@@ -7,75 +7,5 @@
7
7
  #define FOREACH_THREAD_FROM(f,x) x = f; do { x = x->next;
8
8
  #define END_FOREACH_FROM(f,x) } while (x != f)
9
9
 
10
- typedef jmp_buf rb_jmpbuf_t;
11
-
12
- enum thread_status {
13
- THREAD_TO_KILL,
14
- THREAD_RUNNABLE,
15
- THREAD_STOPPED,
16
- THREAD_KILLED,
17
- };
18
-
19
- typedef struct thread * rb_thread_t;
20
-
21
- struct thread {
22
- struct thread *next, *prev;
23
- rb_jmpbuf_t context;
24
- #ifdef SAVE_WIN32_EXCEPTION_LIST
25
- DWORD win32_exception_list;
26
- #endif
27
-
28
- VALUE result;
29
-
30
- long stk_len;
31
- long stk_max;
32
- VALUE *stk_ptr;
33
- VALUE *stk_pos;
34
- #ifdef __ia64__
35
- VALUE *bstr_ptr;
36
- long bstr_len;
37
- #endif
38
-
39
- struct FRAME *frame;
40
- struct SCOPE *scope;
41
- struct RVarmap *dyna_vars;
42
- struct BLOCK *block;
43
- struct iter *iter;
44
- struct tag *tag;
45
- VALUE klass;
46
- VALUE wrapper;
47
- NODE *cref;
48
-
49
- int flags; /* misc. states (vmode/rb_trap_immediate/raised) */
50
-
51
- NODE *node;
52
-
53
- int tracing;
54
- VALUE errinfo;
55
- VALUE last_status;
56
- VALUE last_line;
57
- VALUE last_match;
58
-
59
- int safe;
60
-
61
- enum thread_status status;
62
- int wait_for;
63
- int fd;
64
- fd_set readfds;
65
- fd_set writefds;
66
- fd_set exceptfds;
67
- int select_value;
68
- double delay;
69
- rb_thread_t join;
70
-
71
- int abort;
72
- int priority;
73
- VALUE thgroup;
74
-
75
- st_table *locals;
76
-
77
- VALUE thread;
78
- };
79
-
80
- static rb_thread_t curr_thread = 0;
81
10
  static VALUE backtrace(rb_thread_t);
11
+ // static VALUE backtrace(rb_thread_t th, int lev);
@@ -3,7 +3,7 @@ require 'thread_dumper'
3
3
  module ThreadDump
4
4
  VERSION_MAJOR = 0
5
5
  VERSION_MINOR = 0
6
- VERSION_SUB = 3
6
+ VERSION_SUB = 5
7
7
 
8
8
  VERSION = "#{VERSION_MAJOR}.#{VERSION_MINOR}.#{VERSION_SUB}"
9
9
  end
@@ -18,7 +18,7 @@ module ThreadDump
18
18
  def dump_target=(dump_target)
19
19
  @@dump_target = dump_target
20
20
  end
21
-
21
+
22
22
  def output_format
23
23
  @@output_format ||= :text
24
24
  end
@@ -44,19 +44,18 @@ module ThreadDump
44
44
  def self.write_threads
45
45
  out_arr = []
46
46
 
47
- ThreadDump::Dumper.new.dump.each do |thread_info|
47
+ ThreadDump::Dumper.dump.each do |thread_info|
48
48
  if ThreadDump::Config.output_format == :html
49
49
  out_arr << "<dt>#{thread_info[1]}</dt><dd>#{thread_info[0]}</dd>"
50
50
  else
51
51
  out_arr << "Thread #{thread_info[0]}: #{thread_info[1]}"
52
52
  end
53
53
  end
54
-
55
54
  max_l_out_arr = out_arr.map { |out| out.size }.max
56
55
  fout = STDERR
57
56
 
58
57
  if ThreadDump::Config.dump_target == :file
59
- fout = File.open("/tmp/#{$$}.ruby_threads.html", "w")
58
+ fout = File.open("/tmp/#{$$}.ruby_threads.html", "w")
60
59
  end
61
60
 
62
61
  out_arr.each do |out|
@@ -76,6 +75,6 @@ end
76
75
 
77
76
  trap("QUIT") do
78
77
  Thread.start do
79
- ThreadDump::Monitor.save_threads
78
+ ThreadDump::Monitor.write_threads
80
79
  end
81
80
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
2
+ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: thread-dump
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.3
7
- date: 2007-08-09 00:00:00 -07:00
6
+ version: 0.0.5
7
+ date: 2007-10-30 00:00:00 -07:00
8
8
  summary: Utility which will cause thread dumps during ctrl-break of Ruby process.
9
9
  require_paths:
10
10
  - lib
11
11
  email:
12
12
  homepage:
13
- rubyforge_project: thread-dump
13
+ rubyforge_project:
14
14
  description:
15
15
  autorequire: lib
16
16
  default_executable:
@@ -27,7 +27,7 @@ signing_key:
27
27
  cert_chain:
28
28
  post_install_message:
29
29
  authors:
30
- - Greg Fodor
30
+ - Greg Fodor and Bryan Duxbury
31
31
  files:
32
32
  - ext/thread_dumper.c
33
33
  - ext/thread_dumper.h