15 import pybindgen.settings |
15 import pybindgen.settings |
16 |
16 |
17 from ns3modulegen_generated import module_init, register_types, register_methods, register_functions |
17 from ns3modulegen_generated import module_init, register_types, register_methods, register_functions |
18 import ns3modulegen_core_customizations |
18 import ns3modulegen_core_customizations |
19 import callbacks_list |
19 import callbacks_list |
|
20 import traceback |
20 |
21 |
21 this_script_dir = os.path.dirname(os.path.abspath(sys.argv[0])) |
22 this_script_dir = os.path.dirname(os.path.abspath(sys.argv[0])) |
22 |
23 |
23 class ErrorHandler(pybindgen.settings.ErrorHandler): |
24 class ErrorHandler(pybindgen.settings.ErrorHandler): |
24 def handle_error(self, wrapper, exception, traceback_): |
25 def handle_error(self, wrapper, exception, traceback_): |
|
26 print >> sys.stderr |
|
27 print >> sys.stderr, "---- location:" |
|
28 traceback.print_stack() |
|
29 print >> sys.stderr, "---- error:" |
|
30 traceback.print_tb(traceback_) |
25 try: |
31 try: |
26 stack = wrapper.stack_where_defined |
32 stack = wrapper.stack_where_defined |
27 except AttributeError: |
33 except AttributeError: |
28 print >> sys.stderr, "??:??: %s / %r" % (wrapper, exception) |
34 print >> sys.stderr, "??:??: %s / %r" % (wrapper, exception) |
29 else: |
35 else: |
30 stack = list(stack) |
36 stack = list(stack) |
31 stack.reverse() |
37 stack.reverse() |
32 for (filename, line_number, function_name, text) in stack: |
38 for (filename, line_number, function_name, text) in stack: |
33 file_dir = os.path.dirname(os.path.abspath(filename)) |
39 file_dir = os.path.dirname(os.path.abspath(filename)) |
34 if file_dir == this_script_dir: |
40 if file_dir.startswith(this_script_dir): |
35 print >> sys.stderr, "%s:%i: %r" % (os.path.join("..", "bindings", "python", os.path.basename(filename)), |
41 print >> sys.stderr, "%s:%i: %r" % (os.path.join("..", "bindings", "python", os.path.basename(filename)), |
36 line_number, exception) |
42 line_number, exception) |
37 break |
43 break |
38 return True |
44 return True |
39 pybindgen.settings.error_handler = ErrorHandler() |
45 pybindgen.settings.error_handler = ErrorHandler() |