@@ -88,6 +88,9 @@ class Shell(cmdln.Cmdln):
8888 description = "CodeIntel v%s" % __version__
8989 version = __version__
9090
91+ profiling = False
92+ traceback = False
93+
9194 def __init__ (self , * args , ** kwargs ):
9295 cmdln .Cmdln .__init__ (self , * args , ** kwargs )
9396
@@ -178,6 +181,11 @@ def set_profiling(self, option, opt_str, value, parser):
178181 def set_traceback (self , option , opt_str , value , parser ):
179182 self .traceback = True
180183
184+ def set_stacktracer (self , option , opt_str , value , parser ):
185+ from stacktracer import Stacktracer
186+ self .tracer = Stacktracer ('stacktracer{ext}' , traceback_interval = 5 , stats_interval = 10 )
187+ self .tracer .start ()
188+
181189 def set_verbosity (self , option , opt_str , value , parser ):
182190 self .verbosity += 1
183191 if self .verbosity == 1 :
@@ -219,6 +227,9 @@ def get_optparser(self):
219227 optparser .add_option ("--traceback" ,
220228 action = "callback" , callback = self .set_traceback ,
221229 help = "Show full traceback on error." )
230+ optparser .add_option ("--stacktracer" ,
231+ action = "callback" , callback = self .set_stacktracer ,
232+ help = "Save stacktracer information for profiling." )
222233 return optparser
223234
224235 # ___ ___ _ __
@@ -242,6 +253,7 @@ def do_oop(self, subcmd, opts):
242253 ${cmd_usage}
243254 ${cmd_option_list}
244255 """
256+ import atexit
245257 from codeintel2 .oop import Driver
246258
247259 old_sys_path = set (os .path .abspath (os .path .join (p )) for p in sys .path )
@@ -302,6 +314,7 @@ def do_oop(self, subcmd, opts):
302314 os .makedirs (opts .database_dir )
303315
304316 driver = Driver (db_base_dir = opts .database_dir , fd_in = fd_in , fd_out = fd_out )
317+ atexit .register (driver .finalize )
305318 driver .start ()
306319
307320 # _ _
0 commit comments