Bug 15314 - Why does this error exist? "Cannot find bounds of current function"
Summary: Why does this error exist? "Cannot find bounds of current function"
Status: NEW
Alias: None
Product: gdb
Classification: Unclassified
Component: breakpoints (show other bugs)
Version: HEAD
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-03-27 18:01 UTC by dje
Modified: 2013-03-27 18:10 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description dje 2013-03-27 18:01:01 UTC
gdb has this code in infcmd.c:

          /* If we have no line info, switch to stepi mode.  */
          if (tp->control.step_range_end == 0 && step_stop_if_no_debug)
            tp->control.step_range_start = tp->control.step_range_end = 1;
          else if (tp->control.step_range_end == 0)
            {
              const char *name;

              if (find_pc_partial_function (pc, &name,
                                            &tp->control.step_range_start,
                                            &tp->control.step_range_end) == 0)
                error (_("Cannot find bounds of current function"));

              target_terminal_ours ();
              printf_filtered (_("Single stepping until exit from function %s,"
                                 "\nwhich has no line number information.\n"),
                               name);
            }

Is there a reason to throw an error instead of just printing a message and returning control back to the user? Or, maybe - I didn't dig deeper, set name to "<unknown>" or some such if find_pc_partial_function fails.
[I also didn't dig deeper to see if taking a step back and reworking this code would be better.]
Comment 1 Pedro Alves 2013-03-27 18:08:01 UTC
It's not about the name -- it's about the step range.
That is, what find_pc_partial_function ends up in step_range_start/step_range_end.

Another alternative would be to switch to si mode, like with there's no line info.
Comment 2 dje 2013-03-27 18:10:32 UTC
Ah.  The point is throwing an error seems wrong.