TY - GEN
T1 - On another level
T2 - 2020 Workshop on Testing Database Systems, DBTest 2020
AU - Kersten, Timo
AU - Neumann, Thomas
N1 - Publisher Copyright:
© 2020 ACM.
PY - 2020/6/19
Y1 - 2020/6/19
N2 - Compilation-based query engines generate and compile code at runtime, which is then run to get the query result. In this process there are two levels of source code involved: The code of the code generator itself and the code that is generated at runtime. This can make debugging quite indirect, as a fault in the generated code was caused by an error in the generator. To find the error, we have to look at both, the generated code and the code that generated it. Current debugging technology is not equipped to handle this situation. For example, GNU's gdb only offers facilities to inspect one source line, but not multiple source levels. Also, current debuggers are not able to reconstruct additional program state for further source levels, thus, context is missing during debugging. In this paper, we show how to build a multi-level debugger for generated queries that solves these issues.We propose to use a timetravelling debugger to provide context information for compile-time and runtime, thus providing full interactive debugging capabilities for every source level.We also present how to build such a debugger with low engineering effort by combining existing tool chains.
AB - Compilation-based query engines generate and compile code at runtime, which is then run to get the query result. In this process there are two levels of source code involved: The code of the code generator itself and the code that is generated at runtime. This can make debugging quite indirect, as a fault in the generated code was caused by an error in the generator. To find the error, we have to look at both, the generated code and the code that generated it. Current debugging technology is not equipped to handle this situation. For example, GNU's gdb only offers facilities to inspect one source line, but not multiple source levels. Also, current debuggers are not able to reconstruct additional program state for further source levels, thus, context is missing during debugging. In this paper, we show how to build a multi-level debugger for generated queries that solves these issues.We propose to use a timetravelling debugger to provide context information for compile-time and runtime, thus providing full interactive debugging capabilities for every source level.We also present how to build such a debugger with low engineering effort by combining existing tool chains.
KW - code generation
KW - debugging
KW - relational query execution
UR - http://www.scopus.com/inward/record.url?scp=85086080682&partnerID=8YFLogxK
U2 - 10.1145/3395032.3395321
DO - 10.1145/3395032.3395321
M3 - Conference contribution
AN - SCOPUS:85086080682
T3 - Proceedings of the Workshop on Testing Database Systems, DBTest 2020
BT - Proceedings of the Workshop on Testing Database Systems, DBTest 2020
PB - Association for Computing Machinery, Inc
Y2 - 19 June 2020 through 19 June 2020
ER -