Re: filenames with RH Linux 7.0 and egcs 2.96.

From: Rod Armstrong (rod_at_san-jose.tt.slb.com)
Date: Thu Jan 04 2001 - 18:47:18 GMT


>Rod asked:
>
>> Another thing: when stopped at _dl_debug_state() in your stack example,
>> can you expand any of the dl functions that have a filename entry? 
>> This will show whether teh function has debug symbols or not.
>
>Not certain exactly what you mean by that - they *all* have a filename
>entry.  However, there is no actual source file on disk for any of them.

Terry,
	The stack you mailed me had:

      _dl_catch_error                                            dl-error.c:138
      dl_open_worker                                              dl-open.c:231
      _dl_debug_state                                     (no line numbers)

so _dl_debug_state had no line numbers. Normally, all system libraries should
appear as (no symbols). For instance, doing 'ups ups -a ups' and stoping
the first ups should yield:

   Functions
      main                                            ups.c:779
      ups                                             ups.c:1210
      re_event_loop                                   reg.c:851
      wn_next_event                              wn_event.c:948
      get_event                                  wn_event.c:537
      select_on_mask                             wn_event.c:225
      select                                   (no symbols)
      poll                                     (no symbols)

Seems like egcs is creating partial debug information for stripped libraries,
hence the large file list.

Anyway, to expand a function, left click on the function in the stack
and choose 'expand'. Double click or shift-click also works. The same 
method is used to expand and collapse all objects in ups. For 'poll' in
the example below, a left click followed by an expand emits:

`poll' was not compiled with the -g flag
Function poll has no variable information

  and a middle click emits

No source file known for function poll


>
>On a possibly related note, expanding the "Source files" gets me roughly
>10 million entries (as a conservative estimate :-), listing every C run-time
>library function known to man (and a few that are only known to space aliens).
>
>Somewhere in that list, virtually impossible to find, are the 23 actual source
>files I'm trying to debug :-).  None of the other 9,999,977 source files ac-
>tually exist.
>
>Any way to get ups to *ignore* all those bogus non-existent source files and
>concentrate its attention on the ones I actually wrote myself?
>

Looks like the symbol table reading code needs updating to ignore
the bogus filenames for stripped libs. As a workaround, you can always
just load symbols for your code. E.g. create a ~/.upsinit file with

load foo
load libfoo*

See help -> init file. But then ups will know nothing about code not loaded,
so you couldn't put a breakpoint in the C lib for instance. Try setenv VERBOSE 1
to what is being loaded.

If you know a filename, you can use the %l typing line command (help ->
typing shortcuts) to display a file, or enter a breakpoint or %b or %g
to display a function or global.

Rod


This archive was generated by hypermail 2.1.4 : Wed Feb 13 2002 - 21:51:33 GMT