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