Has the work in this talk been pushed: "Better C++ debugging using Clang Modules in LLDB"?


I tried using lldb built from master, but still seeing some STL container member functions not recognizable in a debugging session. I am wondering if the work has been pushed to master; also if it’s pushed but not enabled by default yet, is there a flag I can use to turn on the expression evaluator using Clang modules. Thanks a lot for the great work.

Best Regards,

+some folks who probably worked on this/know more about it.

I’d imagine more detail would be required - like what platform you’re on, whether you’re building with modules, whether you enabled modular debug info (-gmodules, I think), etc.

+Raphael who did the work for clang modules in the expression evaluator.

The prototype is upstream and tested here [1], however as you can see in the tests it currently requires manually simplifying the expression result type ( e.g. std::vector<int>::size_type needs to be casted to size_t). Also you might easily run into some cases where LLDB can’t handle all these new C++ types in the debugger and crash. I’m currently hacking on some patches to get this enabled default soon-ish but there is no fixed ETA for this feature.

[1] https://github.com/llvm/llvm-project/tree/master/lldb/test/API/commands/expression/import-std-module

Regarding how you would use it you can just check the tests, but the general idea is to run `settings set target.import-std-module true` and then just run expressions in a program that used the STL in some form. But as said, the user experience is still quite crashy until I get some other fixes upstream. I’ll write it in the release notes when I think this is ready to be beta-tested.