debugging llvm from clang using gdb

I've always debugged the backend llc by running it as a separate executable.

I'm seeing a bug that only happens when I run the compiler from clang.

How do you debug this from gdb?

I can put a breakpoint but it never stops when I say "run ...."



Are you debugging the driver process or the -cc1 process? To get the -cc1 process, unfortunately you have to go through the dance of passing -### to get the -cc1 line and then run that in gdb (or write one manually). Alternatively in gdb you can say “set follow-fork child” (or something, check the docs) to automatically follow into the -cc1 child.

Hi Reed,

I can put a breakpoint but it never stops when I say "run ...."

This is usually because clang forks off a process to do the actual
work. Try executing "set follow-fork-mode child" in gdb before running

I vaguely remember that running gdb against the "clang -cc1" command
works too (sometimes), but it's so rare that something is only
clang-debuggable that I've forgotten the details.



That did it. Thanks.

That's how I debug clang itself. I'm not using my head right now. :slight_smile: