有效调试 KDB 脚本

问题描述 投票:0回答:1

我有一个 KDB 脚本,我想运行和调试。本质上,我想逐行运行它,并且还能够遍历函数内调用的各种函数和子函数并检查变量值。请注意,我正在寻找一种方法来进入子函数并检查传递给它的参数值,如果需要,则退出该函数而不逐行执行该函数以加快调试速度。

这可能吗?请注意,虽然我发现链接 https://code.kx.com/q/basics/debug/ 有帮助,但效果不佳,因为它不允许我实现我的目标。

kdb q
1个回答
0
投票

向要检查的函数添加断点。这只不过是 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

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.