K = needs kernel/debug API work
* = done


performance

expression evaluation
	Expression window
	support casts/view as in expression
	Be able to do string compares in conditionals.
	Be able to use thread ID/thread name in conditionals

breakpoints
	breakpoint actions (tracepoints, etc.)
	conditional breakpoint
	counted breakpoints
	class level breakpoints/tracepoints
		- break/trace any time a class member gets called
	breakpoint sets (turn on/off an entire set of breakpoints)
	template breakpoints
		- break on all instance
		- break on a specific instance, use popup to choose

inlines do not show up in stack crawl - bad dwarf?

watchpoints:
*	better entry
*	watchpoint window
*		deleting watchpoints
		editing watchpoints
*	better alert when watchpoint hit
	byte/short - only watchpoints
	conditional watchpoints
		Come up with shortcuts that set a conditional breakpoint to stop when a 
			certain member function is called for a certain instance of a class.
		include or exclude a thread
	watchpoint actions
	smart watchpoints
		watch a word inside a block that gets moved by realloc - watchpoint follows the block
K	watchpoints on an area (entire object, array ,etc.) - need kernel support
K	Trap-on-read watchpoints - need kernel support

Be Specific Support
	Support showing known Be types in their real form
	entry_ref
	BString
	rgb_color
	BRect
	BPoint
	...
	
For conditional breakpoints and watchpoints, be able to specify that a 
	certain function must/must not be in the call stack

* special handling of the first line of a function
*	breaks step out

add support for easy stepping into a specific function that has function calls as arguments
	b(a(13)) - I want to step into b and not have to step into a first (probably hard with dwarf)

K optionally suspend all threads when stopped

show return value of a function

show runtime type, polymorfic type display of objects
	add code that does the eqivalent of a dynamic cast on a given object pointer
	make this optional

better memory dump
*	allow re-entering any address
	expression evaluation - evaluate on entry x evaluate after every step

tooltips display variable values

right-click on variable shows context menu of types

calculator window - evaluates an expression, shows binary, hex, decimal
	maybe an option of the expression window

specify array size on individual arrays

Message window
	shows all the watchpoint messages, the debugger messages, etc.

Add Stop (as in stop thread) to the menus.

Support new strace API
	(strace sends debugging message when you are about to
	execut a syscall instruction.  This makes it easy to
	say, stop on next "read" system call, "ioctl", etc.)

* stepping through code without debugging info - show assembly
*	(write a subclass of DSymFile to support assembly ?)
*	turning on assembly in files with code could anotate the assembly with the code
*	mixed source/assembly stepping ove assembly
	Allow stepping through mixed source/assembly


fallback to internal symbols in a stack crawl if dwarf is missing

make bdb a general team debugger

K attach bdb to a crashed application

K remote debugging

release a semaphore
	add unified calls to BLocker, etc. that allow the debugger to unlock
	instrument kit classes for semafore debugging, deadlock detection
	use addons for most of the above to ensure addon api is rich
	
shortcuts
*	Menu item (Alt-T) to bring up team window
	Menu item (Alt-E) to open file in editor (double-click on the file name)
	switch to next window

sort source files by container (libbe, tracker)

improve UI
	consider using less windows (eliminate team window or parts of it)
	make the lists not flicker as much
	don't leave dirt around
	remember splitter bar positions
	improve settings window

improve the find window

.dbg file info needs to get updated after a change in the app
	could store more context to allow re-synching a breakpoint location after code changed

startup
	specify environment variables
	specify command line options

configurable syntax coloring color

Teams window
	show more info window like tsac -- shows memory usage, CPU utilization per thread, etc.
	make outline list based - include threads too
	thread lists - show why blocked (semaphore, like ps)
	
Metrowerks Zone Ranger-like memory browsing and map

consider supporting stabs

dwarf problems
	find all problems, get Cygnus to fix them
	no variables when stepping through inlines
	bad out of scope info

external tool support
	profiling
	leakchecking
	better addon support (should be able to write a quick&dirty addon to debug a specific problem)
	malloc debug integration

console/debugger shell for gdb-like command entry
	addon support
	simple scripting to allow dumping memory, setting breakpoints, etc.

messaging api to talk to editors
	set breakpoint
	get list of breakpoints
	run, step ...
	evaluate expression
	get stack

* global variables not fully implemented
*	can't change a value
*	can't use a global in memory dump

K call a function
	in debugger nub set up a play area, spawn thread
	virtuals will be tough

K Save state
	should save stackcrawls from all open windows
	optionaly should do where is on every thread

Core dump/core file facilities.

Add kit class support to tie into bdb - bdb oriented equivalents of PrintToStream, etc.

K Passing signal information to debugger

break on exit

break on exception thrown
	conditional, etc. like normal breakpoints

K break on thread creation

K Fix problems with debug API (in some cases apps/debugger cannot get killed, etc.)
