We're looking for a highly motivated and skilled student to join our team as an intern specializing in the LLDB debugger on Windows. This role offers a unique opportunity to dive into the complexities of system development, operating systems, and the internals of debuggers and compilers. You'll gain hands-on experience working with C++ and Python in a real-world development environment, focusing on debugging large binaries, particularly those within Unreal Engine-based game projects. Given the scale and complexity of these binaries, optimizing debugger performance is crucial. If you're passionate about software development, eager to tackle significant challenges, and keen to deepen your understanding of debugging tools, systems programming, and high-performance scenarios, we'd love to hear from you!
We have prepared two projects so you can choose the one that excites you most. Both are important and present unique challenges, but they require different skill sets and levels of complexity. We do not necessarily value the more difficult one over the other.
Custom stepping on C++
We use custom stepping scripts for step-in, step-over, and step-out operations. The scripts are written in Python using the LLDB API, which presents some limitations and reduces performance. As part of the project, you will need to understand the custom stepping functionality in LLDB, investigate how it works, and write a C++ implementation to make it faster and replace the default LLDB stepping implementation.
Extra requirement:
Basic understanding of x86 assembler
Natvis Support in C++
Our debugger currently supports Natvis technology for visualizing native data structures. The existing implementation is written in Python and relies heavily on interop with LLDB, which results in performance overhead during parsing and interpretation of Natvis files.
We plan to reimplement Natvis support in C++ in order to significantly improve the performance of parsing and interpreting Natvis visualizations, and to reduce interop overhead.
General requirements:
Strong knowledge of C and C++
General understanding of the debugging process
Nice to have:
Proficiency in Python
Understanding of operating system principles
Understanding of x86 assembler
Understanding of compilers