bindings/python/ns3modulegen.py
changeset 5878 34459001e1ba
parent 5839 569f16c35f46
child 5911 993998a62a6a
equal deleted inserted replaced
5877:24dd3b1a0bb6 5878:34459001e1ba
    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()