QStudio
Query kdb+ Servers and Chart Results.
Kdb+ provides limited tools for debugging, we have break points but navigating the call stack to find current variable values is difficult as you will see below:
From within functions kdb supports both standard returns and exceptions. At any time :1 could be used within a function to return value 1 immediately and prevent further statements being executed. e.g. {a:x+1; :x+2; a} 1 will return the value 3.
Similarly an exception can be signaled and execution halted by using single quote e.g. 'err. You may have seen this happen when you cause an error e.g. {x+1} `a Execution is stopped inside the function and the console shows q)). While inside this break mode, remote calls are halted, variables inside the function are visible and execution control will only be returned to the main loop when you enter a single slash \. Here are some examples:
When a break occurs, execution is halted at the level of the call stack that the exception was thrown. During a break we can:
Rather than break mode occurring, we can wrap a section of code using protected evaluation. Any exceptions that occur within protected evaluation can be handled without rising all the way up the stack and causing break mode. (similar to try/catch in other languages like java) e.g.:
By default only functions entered at the console result in break mode being thrown, This can also be applied to client queries using system command \e 1 (0 turns off, 1 turns on) . This should only be used for testing for as mentioned, when in break mode remote queries are queued on a stack and not executed until the function returns.
At the q console Control-C can be used to interrupt a long running command in some cases.
Control-C sends a SIGINT
which if the running q command supports it, interrupts and returns early. It is also possible to send an interrupt from the
linux terminal using the command kill -SIGINT processPIDHere
. When interrupted successfully the console will show
a 'stop exception and break at the current position in the stack:
Query kdb+ Servers and Chart Results.