Compile something like this with debugging information: if (func1 () || func2 () || func3 ())
Set a breakpoint on func1, and then use GDB's "finish" command to leave the function. You'll be back on the first line of the if. Same if you finish from func2. Nothing in the process of parsing a conditional expression sets expression locations for individual parts of the expression. We do set a line number on the outer compound expression, and that points at the beginning. It would be strange to single-step onto the conditional jump instruction and be taken back to the top of the "if". So this may not be a straightforward fix. -- Summary: C frontend does not generate line information for multi- line conditions Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: drow at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27672