我有一个 KDB 脚本,我想运行和调试。本质上,我想逐行运行它,并且还能够遍历函数内调用的各种函数和子函数并检查变量值。请注意,我正在寻找一种方法来进入子函数并检查传递给它的参数值,如果需要,则退出该函数而不逐行执行该函数以加快调试速度。
这可能吗?请注意,虽然我发现链接 https://code.kx.com/q/basics/debug/ 有帮助,但效果不佳,因为它不允许我实现我的目标。
向要检查的函数添加断点。这只不过是 kdb+ 在执行时无法识别的变量。这将进入调试器并允许您检查堆栈、定义的变量并允许您上下移动函数调用。例如:
q)f1:{f2 x,4}
q)f2:{break;f3 x} // break is unknown
q)f3:sum
q)f1 1 2 3
'break
[2] /home/pi/code/dbg.q:2: f2:{break;f3 x}
q))x // Examine current x variable (inside f2)
1 2 3 4
q))` // backtick moves up the stack to the calling function (f1)
q)x // Examine x as seen by f1
1 2 3
q)). // dot moves down the stack
q)) [2] /home/pi/code/dbg.q:2: f2:{break;f3 x}
^
q))f3 x // inside f2, we can see that f3 x works
10
希望这有帮助