I've searched for countless hours trying to find a C debugger, or a frontend to GDB, on Linux. There are so many options and yet so few I would actually use. It seems like every one of them is abandoned halfway.<p>My requirements aren't that esoteric and really have a hard time imagining how anybody debugs C code without them.<p>Every debugger I tried got these ones right: breakpoints, step in/over/out, continue/pause, and stack traces.<p>But these are the ones I really need and almost every debugger is missing at least one:<p>1) show the code that is being debugged, not one line at a time but the whole file so I can see the context and scroll up and down.<p>2) arbitrary watch expressions view that automatically and immediately update on every step.<p>3) able to expand and collapse structs and pointers in the expressions view and have them stay that way when they update.<p>4) remember my breakpoints and watch expressions per project and automatically load them.<p>And some nice haves:<p>5) configurable window layout.<p>6) custom display/format of custom types for the watch expressions.<p>I have tried the following and many more but ultimately gave up on them:<p>- gdb's builtin tui: it misses almost all the above except #1.<p>- various gdb scripts (pwndb, gef, peda): same as gdb's builtin tui.<p>- ddd: extremely hard to use UI.<p>- seer: I think it missed #3 and #4.<p>- xxgdb<p>- kdbg: I remember it had many bugs and couldn't properly restart/reload the program.<p>- gdbgui<p>- gdb-frontend<p>- emacs GUD: buggy, hard to use, expressions go in speedbar in another frame which is just so weird in terms of UX.<p>RemedyBG is pretty nice and I think covers everything but it's Windows only.<p>Currently, gf is the only one I found that matches my needs.<p>I hope this is helpful. I'm curious how everybody else approaches debugging C on Linux.