Blog

Extending mdb tab completion: from hackathon to Illumos

One of my hackathon projects was to extend the tab completion support in mdb to include global symbols in ad

One of my hackathon projects was to extend the tab completion support in mdb to include global symbols in addition to the tab completion that already exists for dcmds, walkers etc. For a bit of context, if you start mdb -k on DelphixOS today you have 26367 global symbols to choose from.

The goal was to enable a workflow like this one:

> cpu_c<TAB>
cpu_call
cpu_configure
cpu_core
cpu_create_intrstat

> cpu_core::pr<TAB>
print
printf
printmmbm

Thanks to the clarity of the mdb codebase as well as help and encouragement from Matt Amdur, who co-authored the original mdb tab completion support, I was able to get from looking at the source for the first time in my life to a running prototype in a couple of hours.

Frankly, it was a blast to use the hackathon as an excuse to dive into unfamiliar territory, build something usable and disseminate it to the community at large.

On March 1 this feature was made available in the development branch of DelphixOS and on March 4 Chris Siden here at Delphix posted it for review at illumos.org.