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