jrf_pdb_agent_lib の事例集。途中で .py…
jrf> jrf_pdb_agent_lib の事例集。途中で .py ファイルを書き換える。
test_3.py が次のようであるとする。
import jrf_pdb_agent_lib as pal
import test_4
def main():
pal.do("test1",
current_code="test_4.sub1()")
if __name__ == "__main__":
main()
test_4.py が次のようであるとする。
import jrf_pdb_agent_lib as pal
def sub1():
pal.consult_human("ここをいじって")
pal.do("test2")
このとき、test_3.py を実行すると、まず pal.do test1 でデバッガに入るのだが、そこでは c する。今度は pal.consult_human("ここをいじって") でデバッガに入るのだが、ここで対話的にファイルを書き換えたあと…。
global EXCEPTION; EXCEPTION = LoopRequestException("reload")
…して、c することで、一旦 pal.do test1 内に戻る。そして、u して…
pal.reload_module("test_4"); pal.EXEC = "test_4.sub1()"
…を実行し、c すると、書き換えた sub1 に行くことができる。こういう consult_human リクエストにはこういう流れになるのだと思う。