mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-12-25 12:02:01 +01:00
115 lines
4.8 KiB
Plaintext
115 lines
4.8 KiB
Plaintext
|
|
Suggested projects for aspiring or current GDB hackers
|
|
======================================================
|
|
|
|
(You should probably chat with kingdon@ai.mit.edu to make sure that
|
|
no one else is doing the project you chose).
|
|
|
|
Add watchpoints (break if a memory location changes). This would
|
|
usually have to involve constant single stepping, but occasionally
|
|
there is operating system support which gdb should be able to cleanly
|
|
use (e.g. on the 80386, there are 4 debug registers. By ptracing an
|
|
address into them, you can get a trap on writes or on reads and
|
|
writes).
|
|
|
|
Rewrite proceed, wait_for_inferior, and normal_stop to clean them up.
|
|
Suggestions:
|
|
|
|
1) Make each test in wait_for_inferior a seperate subroutine
|
|
call.
|
|
2) Combine wait_for_inferior and normal_stop to clean up
|
|
communication via global variables.
|
|
3) See if you can find some way to clean up the global
|
|
variables that are used; possibly group them by data flow
|
|
and information content?
|
|
|
|
Work out some kind of way to allow running the inferior to be done as
|
|
a sub-execution of, eg. breakpoint command lists. Currently running
|
|
the inferior interupts any command list execution. This would require
|
|
some rewriting of wait_for_inferior & friends, and hence should
|
|
probably be done in concert with the above.
|
|
|
|
Add function arguments to gdb user defined functions.
|
|
|
|
Add convenience variables that refer to exec file, symbol file,
|
|
selected frame source file, selected frame function, selected frame
|
|
line number, etc.
|
|
|
|
Add a "suspend" subcommand of the "continue" command to suspend gdb
|
|
while continuing execution of the subprocess. Useful when you are
|
|
debugging servers and you want to dodge out and initiate a connection
|
|
to a server running under gdb.
|
|
|
|
Make "handle" understand symbolic signal names.
|
|
|
|
Work out and implement a reasonably general mechanism for multi-threaded
|
|
processies. There are parts of one implemented in convex-dep.c, if
|
|
you want an example.
|
|
|
|
A standalone version of gdb on the i386 exists. Anyone who wants to
|
|
do some serious working cleaning it up and making it a general
|
|
standalone gdb should contact pace@wheaties.ai.mit.edu.
|
|
|
|
Add stab information to allow reasonable debugging of inline functions
|
|
(possibly they should show up on a stack backtrace? With a note
|
|
indicating that they weren't "real"?).
|
|
|
|
Implement support for specifying arbitrary locations of stack frames
|
|
(in practice, this usually requires specification of both the top and
|
|
bottom of the stack frame (fp and sp), since you *must* retrieve the
|
|
pc that was saved in the innermost frame).
|
|
|
|
Modify the naked "until" command to step until past the current source
|
|
line, rather than past the current pc value. This is tricky simply
|
|
because the low level routines have no way of specifying a multi-line
|
|
step range, and there is no way of saying "don't print stuff when we
|
|
stop" from above (otherwise could just call step many times).
|
|
|
|
Modify the handling of symbols grouped through BINCL/EINCL stabs to
|
|
allocate a partial symtab for each BINCL/EINCL grouping. This will
|
|
seriously decrease the size of inter-psymtab dependencies and hence
|
|
lessen the amount that needs to be read in when a new source file is
|
|
accessed.
|
|
|
|
Work out some method of saving breakpoints across the reloading of an
|
|
executable. Probably this should be by saving the commands by which
|
|
the breakpoints were set and re-executing them (as text locations may
|
|
change).
|
|
|
|
Do an "x/i $pc" after each stepi or nexti.
|
|
|
|
Modify all of the disassemblers to use printf_filtered to get correct
|
|
more filtering.
|
|
|
|
Modify gdb to work correctly with Pascal.
|
|
|
|
Rewrite macros that handle frame chaining and frameless functions.
|
|
They should be able to tell the difference between start, main, and a
|
|
frameless function called from main.
|
|
|
|
Work out what information would need to be included in an executable
|
|
by the compiler to allow gdb to debug functions which do not have a
|
|
frame pointer. Modify gdb and gcc to do this.
|
|
|
|
When `attached' to a program (via either OS support or remote
|
|
debugging), gdb should arrange to catch signals which the terminal
|
|
might send, as it is unlikely that the program will be able to notice
|
|
them. SIGINT and SIGTSTP are obvious examples.
|
|
|
|
Enhance the gdb manual with extra examples where needed.
|
|
|
|
Arrange for list_command not to use decode_line_1 and thus not require
|
|
symbols to be read in simply to read a source file.
|
|
|
|
Problem in xgdb; the readline library needs the terminal in CBREAK
|
|
mode for command line editing, but this makes it difficult to dispatch
|
|
on button presses. Possible solution: use a define to replace getc in
|
|
readline.c with a routine that does button dispatches. You should
|
|
probably see XGDB-README before you fiddle with XGDB. Also, someone
|
|
is implementing a new xgdb; it may not be worth while fiddling with
|
|
the old one.
|
|
|
|
# Local Variables:
|
|
# mode: text
|
|
# End:
|