It’s all in the title: How do you debug and profile in Odin? What workflows are helpful to you and which programs do you use?
PS: My not so secret intent is to make a PR for the FAQ when/if there are enough answers, because to me this a fairly basic tooling question that I want answered for a language I want to work with.
Keep in mind that I main Linux. Most of this also applies to FreeBSD. Probably to macOS as well if I’m not mistaken though I only have recently started dabbling in that. All of these tools are also general purpose; they have nothing to do with Odin and you could just as easily use them for programs compiled from C.
objdump for disassembly and checking symbols.
readelf to get general executable information, including symbol tables.
ldd to list shared object dependencies.
strace on Linux to observe syscalls and their results. picotrace on FreeBSD. Both of these tools have been very handy for debugging kernel-interfacing code.
lldb for step-by-step debugging, reading of registers, memory, and so on.
gdb if lldb has issues or is unable to get a stack trace which does happen rarely.
valgrind to record profiling statistics to be later viewed with kcachegrind.
prof to also record and view profiling statistics, as a second opinion.
That said, the sooner that the *nix-like operating systems get a competent visual debugger, the better. I don’t recommend using text-based debuggers if you have access to an alternative.