xref: /386bsd/usr/src/usr.bin/gdb/Projects (revision a2142627)
1
2        Suggested projects for aspiring or current GDB hackers
3        ======================================================
4
5    (You should probably chat with kingdon@ai.mit.edu to make sure that
6  no one else is doing the project you chose).
7
8Add watchpoints (break if a memory location changes).  This would
9usually have to involve constant single stepping, but occasionally
10there is operating system support which gdb should be able to cleanly
11use (e.g. on the 80386, there are 4 debug registers.  By ptracing an
12address into them, you can get a trap on writes or on reads and
13writes).
14
15Rewrite proceed, wait_for_inferior, and normal_stop to clean them up.
16Suggestions:
17
18	1) Make each test in wait_for_inferior a seperate subroutine
19	   call.
20	2) Combine wait_for_inferior and normal_stop to clean up
21	   communication via global variables.
22	3) See if you can find some way to clean up the global
23	   variables that are used; possibly group them by data flow
24	   and information content?
25
26Work out some kind of way to allow running the inferior to be done as
27a sub-execution of, eg. breakpoint command lists.  Currently running
28the inferior interupts any command list execution.  This would require
29some rewriting of wait_for_inferior & friends, and hence should
30probably be done in concert with the above.
31
32Add function arguments to gdb user defined functions.
33
34Add convenience variables that refer to exec file, symbol file,
35selected frame source file, selected frame function, selected frame
36line number, etc.
37
38Add a "suspend" subcommand of the "continue" command to suspend gdb
39while continuing  execution of the subprocess.  Useful when you are
40debugging servers and you want to dodge out and initiate a connection
41to a server running under gdb.
42
43Make "handle" understand symbolic signal names.
44
45Work out and implement a reasonably general mechanism for multi-threaded
46processies.  There are parts of one implemented in convex-dep.c, if
47you want an example.
48
49A standalone version of gdb on the i386 exists.  Anyone who wants to
50do some serious working cleaning it up and making it a general
51standalone gdb should contact pace@wheaties.ai.mit.edu.
52
53Add stab information to allow reasonable debugging of inline functions
54(possibly they should show up on a stack backtrace?  With a note
55indicating that they weren't "real"?).
56
57Implement support for specifying arbitrary locations of stack frames
58(in practice, this usually requires specification of both the top and
59bottom of the stack frame (fp and sp), since you *must* retrieve the
60pc that was saved in the innermost frame).
61
62Modify the naked "until" command to step until past the current source
63line, rather than past the current pc value.  This is tricky simply
64because the low level routines have no way of specifying a multi-line
65step range, and there is no way of saying "don't print stuff when we
66stop" from above (otherwise could just call step many times).
67
68Modify the handling of symbols grouped through BINCL/EINCL stabs to
69allocate a partial symtab for each BINCL/EINCL grouping.  This will
70seriously decrease the size of inter-psymtab dependencies and hence
71lessen the amount that needs to be read in when a new source file is
72accessed.
73
74Work out some method of saving breakpoints across the reloading of an
75executable.  Probably this should be by saving the commands by which
76the breakpoints were set and re-executing them (as text locations may
77change).
78
79Do an "x/i $pc" after each stepi or nexti.
80
81Modify all of the disassemblers to use printf_filtered to get correct
82more filtering.
83
84Modify gdb to work correctly with Pascal.
85
86Rewrite macros that handle frame chaining and frameless functions.
87They should be able to tell the difference between start, main, and a
88frameless function called from main.
89
90Work out what information would need to be included in an executable
91by the compiler to allow gdb to debug functions which do not have a
92frame pointer.  Modify gdb and gcc to do this.
93
94When `attached' to a program (via either OS support or remote
95debugging), gdb should arrange to catch signals which the terminal
96might send, as it is unlikely that the program will be able to notice
97them.  SIGINT and SIGTSTP are obvious examples.
98
99Enhance the gdb manual with extra examples where needed.
100
101Arrange for list_command not to use decode_line_1 and thus not require
102symbols to be read in simply to read a source file.
103
104Problem in xgdb; the readline library needs the terminal in CBREAK
105mode for command line editing, but this makes it difficult to dispatch
106on button presses.  Possible solution: use a define to replace getc in
107readline.c with a routine that does button dispatches.  You should
108probably see XGDB-README before you fiddle with XGDB.  Also, someone
109is implementing a new xgdb; it may not be worth while fiddling with
110the old one.
111
112# Local Variables:
113# mode: text
114# End:
115