rpdb2源码分析(6)

CDebuggerEngine的settrace()函数

在7291行。

函数原型:def settrace(self, f = None, f_break_on_init = True, timeout = None, builtins_hack = None)

f:调用此函数之前的调用栈。

f_break_on_init:设置为False了。

builtins_hack :设置为被调试的文件全路径名。

timeout :没有动,取默认值None。

1、获得线程ID。

使用了thread.get_ident()函数,不错,学习到一招。

2、【待分析】self.set_request_go_timer(timeout)

不知道是干吗的。

3、根据传入参数,初始化一些内部变量。

4、【待分析】进行代码调试跟踪。

threading.settrace()

虽然不太明白这个函数是干什么用的,但是大概理解对多线程,要想trace代码,必须先调用它,同时还要调用sys.settrace,二者缺一不可。

threading.settrace(self.trace_dispatch_init)

trace_dispatch_init:这是一个函数,每次执行一次,都要经过这个函数处理,达到了代码调试跟踪的目的。

其实要想追踪,还有一个条件,那就是设置调用栈的f_trace,一旦设置,系统就死了,下次执行就进入到trace_dispatch_init函数中了。

f.f_trace = self.trace_dispatch_init

你可能感兴趣的:(rpdb2源码分析(6))