種別[gsm] 2025-06-01T12:23:06Z
セクショングローバル共有メモ
日時2025-06-01T12:23:06Z
元URL(URLなし)

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 リクエストにはこういう流れになるのだと思う。