Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
3788 lines (2391 sloc) 123 KB
2004-06-12 Martin Baulig <>
Released version 0.9 "Seven Mile Bridge" of the Mono Debugger :-)
2004-06-12 Martin Baulig <>
*, wrapper/ GACify the debugger :-)
* wrapper/AssemblyInfo.cs: New file.
* wrapper/mono.snk, wrapper/ New files.
2004-06-12 Martin Baulig <>
* Bumped version number to 0.9.
2004-06-12 Martin Baulig <>
* classes/ThreadGroup.cs (Global, Main): New static public
properties. Initialize the "global" and "main" thread group in
our static .ctor.
2004-06-09 Martin Baulig <>
* backends/SingleSteppingEngine.cs: When entering a JIT
trampoline, breakpoints on that call must remain disabled while
we're inside the trampoline function.
2004-06-08 Martin Baulig <>
* frontends/command-line/ExpressionParser.jay: Added
`&expr' syntax to take the address of an expression.
* frontends/scripting/Expression.cs
(PointerDereferenceExpression): Allow NumberExpression's as target
to make `*0x12345678' and `*305419896' work.
* frontends/scripting/Command.cs (ExamineCommand): Allow repeating
this command by typing it again without arguments. Require a
pointer expression as argument.
2004-06-03 Martin Baulig <>
* frontends/scripting/ScriptingContext.cs
(ScriptingContext.CurrentFrame): Removed the setter.
(ScriptingContext.CurrentFrameIndex): New property.
2004-06-03 Martin Baulig <>
* backends/mono-csharp/MonoFunctionType.cs
(MonoFunctionType.Invoke): Copy register variables onto the heap.
2004-06-03 Martin Baulig <>
* test/TestInvocation.cs: New file.
* test/mono-debugger.tests/TestInvocation.exp: New test.
2004-06-02 Martin Baulig <>
Released version 0.8 "Wrightsville Beach" of the Mono Debugger :-)
2004-06-01 Martin Baulig <>
* frontends/command-line/GnuReadline.cs
(mono_debugger_readline_add_history): This returns `void'.
2004-05-29 Martin Baulig <>
* arch/bfdglue.c (bfd_glue_get_target_name): Return a g_strdup()ed
copy since the managed->unmanaged wrapper now g_free()s it.
(bfd_glue_get_symbol): Likewise.
2004-03-16 Martin Baulig <>
Released version 0.7 "Wilmington" of the Mono Debugger :-)
2004-04-29 Martin Baulig <>
* Bumped version number to 0.7.
2004-04-26 Martin Baulig <>
* frontends/scripting/Session.cs: New file.
* arch/Bfd.cs (Bfd): Added serialization support.
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoSymbolFile): Serializable.
* classes/Breakpoint.cs, classes/SourceInfo.cs: These are easy,
just save/load them.
2004-04-26 Martin Baulig <>
* classes/ProcessStart.cs: Don't make this class abstract.
2004-04-25 Martin Baulig <>
* arch/Bfd.cs: Improved support for libraries.
* arch/DwarfReader.cs: Allow reading a library which is not yet
loaded in memory; ie. read the line number table, but do
relocations later.
2004-04-23 Martin Baulig <>
* classes/Module.cs (Module.RegisterLoadHandler): Moved here from
* classes/SourceInfo.cs (SourceMethod): Don't make this abstract.
(SourceMethod.RegisterLoadHandler): Moved into Module.
2004-04-23 Martin Baulig <>
* classes/ISymbolFile.cs: New public interface.
* classes/SourceInfo.cs (SourceFile): Don't make this abstract.
* classes/Module.cs (Module.SourceFile): New abstract property.
(Module.Sources): Moved this property into ISymbolFile.
2004-04-20 Miguel de Icaza <>
* frontends/command-line/Main.cs: Add alias for "b" to mean "break"
* frontends/scripting/Command.cs: Do not try to resolve if we have
no current process, it leads to a crash.
(QuitCommand): Derive from CL.Command, so we do not require a
process to debug to quit.
2004-04-16 Peter Williams <>
* frontends/scripting/Command.cs: (ShowMethodsCommand.DoResolve):
Fix paste-o in help text.
(StepCommand.DoExecute): Call ResetCurrentSourceCode so that a
'list' command will cause listing to start from the next line.
Also for next, nexti, stepi, finish, and continue.
2004-04-14 Martin Baulig <>
* frontends/scripting/Command.cs
(TargetCommand): Renamed this to FrameCommand.
(ProcessCommand): New abstract base class.
2004-04-14 Martin Baulig <>
* frontends/scripting/AssertCommand.cs: Removed.
2004-04-14 Martin Baulig <>
* frontends/scripting/Interpreter.cs (Interpreter): New abstract
base class. Moved most of the functionality from ScriptingContext
* frontends/scripting/ScriptingContext.cs (ScriptingContext): This
is now a real "context".
2004-04-14 Martin Baulig <>
* frontends/scripting/Engine.cs (Engine): New public class.
* frontends/scripting/Generator.cs: Renamed to Engine.cs
2004-04-14 Martin Baulig <>
* frontends/scripting/Command.cs (TargetCommand): New abstract
base class.
2004-04-14 Martin Baulig <>
* frontends/command-line/: Started working on a new command line
* frontends/scripting/Parser.jay: Removed.
* frontends/scripting/Tokenizer.cs: Removed.
2004-04-14 Martin Baulig <>
The debugger is unstable at the moment, please use the latest release.
2004-04-13 Martin Baulig <>
* wrapper/wrapper.c: Don't call mono_thread_manage(), but send a
special notification instead. This tells the MonoThreadManager to
deal with the main thread.
2004-04-13 Martin Baulig <>
* wrapper/wrapper.c: Use the Mono I/O-layer instead of POSIX
2004-04-13 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoCSharpLanguageBackend): Don't take a `Process' argument.
* wrapper/: We don't need the command thread anymore.
2004-04-13 Martin Baulig <>
* classes/BreakpointHandle.cs (BreakpointHandle.Create): New
internal static method; takes a Process argument to create the
load handler.
* classes/SourceInfo.cs (SourceMethod.RegisterLoadHandler): Added
Process argument.
2004-04-13 Martin Baulig <>
* interfaces/ITargetMemoryAccess.cs
(ITargetMemoryInfo.Architecture): New property.
* interface/IMethod.cs (IMethod.GetTrampoline): Added
ITargetMemoryAccess argument.
* backends/ILanguageBackend.cs (ILanguageBackend.GetTrampoline):
Renamed to GetTrampolineAddress() and take an ITargetMemoryAccess
instead of an Inferior. Added ITargetMemoryAccess argument to the
other overloaded version.
2004-04-13 Martin Baulig <>
Rewrote and simplified the notification code.
* backends/Inferior.cs (Inferior.ChildEventType): Added
`CHILD_NOTIFICATION'. This is a special event which'll be
returned when the runtime/JIT wants to send us a notification.
* backends/MonoThreadManager (HandleChildEvent): We're now getting
all events from the ThreadManager and handle notifications here.
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoCSharpLanguageBackend.DaemonThreadHandler): Removed.
(MonoCSharpLanguageBackend.Notification): New public method.
Handle notifications here.
* backends/server/server.h
(mono_debugger_server_set_notification): New global function to
tell the backend about our notification address. Whenever a
breakpoint at that address is hit, it's now sending a
* wrapper/wrapper.c: Majorly cleaned this up; use the new
notification system.
2004-04-13 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoSymbolFile.GetMethod_internal): Use the full method signature
as method name.
* arch/BfdDisassembler.cs (print_address_func): Put back
trampoline support.
2004-04-13 Martin Baulig <>
* backends/server/server.h (mono_debugger_server_get_target_info):
Added `guint32 *is_bigendian'.
2004-04-13 Martin Baulig <>
* arch/Bfd.cs: Get the name of the target on startup, added
PowerPC support.
2004-04-13 Martin Baulig <>
* arch/bfdglue.c (bfd_glue_get_target_name): New function.
2004-04-13 Martin Baulig <>
* classes/ProcessStart.cs (Options.LoadNativeSymbolTable): Added
`--native-symtabs' command line option.
2004-04-13 Martin Baulig <>
* arch/ArchitecturePowerPC.cs: New file.
* arch/StabsReader.cs: New file.
2004-04-13 Martin Baulig <>
* interfaces/ITargetMemoryAccess.cs
(ITargetInfo): Added `bool IsBigEndian'.
2004-04-13 Martin Baulig <>
* backends/server/server.h
(mono_debugger_server_global_wait): Take a `guint32 *', not a
`guint64 *'.
(mono_debugger_server_dispatch_event): `status' is now a
`guint32', not a `guint64'.
2004-04-10 Martin Baulig <>
* arch/: Imported Binutils 2.14.
2004-04-09 Martin Baulig <>
* backends/server/library.c: Put this back.
* backends/server/server.h: Put the vtable back.
(mono_debugger_server_get_target_info): Don't take a ServerHandle.
2004-04-09 Martin Baulig <>
* classes/TargetException.cs
(TargetException): Don't make this abstract.
(TargetMemoryException): Added parameterless .ctor.
* backends/Interior.cs (Inferior.GlobalStop): New public method.
* backends/SingleStepping.cs (SingleSteppingEngine.Interrupt): Call
GlobalStop() instead of Stop() on the inferior.
2004-04-09 Martin Baulig <>
* Added private configure option and an automake
conditional to enable some hacking features - just for me at the
moment ...
2004-03-16 Martin Baulig <>
Released version 0.6 "Atlanta" of the Mono Debugger :-)
2004-03-16 Martin Baulig <>
* RELEASE-NOTES-0.6.txt: New file.
* Check whether we have NPTL support.
2004-03-05 Martin Baulig <>
* frontends/scripting/Parser.jay: Added "repeat" command.
2004-03-05 Martin Baulig <>
* backends/SingleSteppingEngine.cs: Use method_has_source()
everywhere and made it actually work.
* classes/TargetAddress.cs: Committed an ugly hack to the .ctor;
since we're currently only running on the i386, we can just throw
the upper 32 bits away to work around some marshalling issues.
2004-03-05 Martin Baulig <>
* wrapper.c (compile_method): Return a guint64.
2004-03-05 Martin Baulig <>
* backends/SingleSteppingEngine.cs (method_has_source): New
private method to check whether a method has source code; it's
used to determine whether we should enter a method while doing a
source stepping operation.
* classes/SourceFileFactory (SourceFileFactory.Exists): New public
method; just checks whether the file exists without opening it.
2004-03-05 Martin Baulig <>
* backends/SingleSteppingEngine.cs (callback_method_compiled):
Step over it if we're performing a source stepping operation and
the method doesn't have any source code.
2004-03-04 Martin Baulig <>
* backends/SingleSteppingEngine.cs (ProcessCommand): Call Step()
for OperationType.Run and OperationType.RunInBackground.
(Step, DoStep): Allow OperationType.Run(InBackground).
2004-03-04 Martin Baulig <>
* classes/Backtrace.cs (Length): Return 0 if we don't have any
* classes/SourceAddress.cs (ToString): Return "filename:linenum".
2004-03-04 Martin Baulig <>
* backends/server/i386-linux-ptrace.c
(mono_debugger_server_stop_and_wait): Make this work reliably; if
mono_debugger_server_global_wait() is running while we're being
called, "steal" its return value and return it here.
2004-03-04 Martin Baulig <>
* backends/SingleSteppingEngine.cs (SendSyncCommand): Allow sync
commands to be run from the background thread, ie. inside an event
2004-03-04 Martin Baulig <>
* classes/Breakpoint.cs (BreakpointEventHandler): Added additional
StackFrame argument.
2004-03-04 Martin Baulig <>
* backends/Debugger.cs (DebuggerBackend.Initialize): Renamed this
to DoInitialize() and added a static Initialize().
* backends/SingleSteppingEngine.cs (Kill): New public method.
* backends/server/i386-linux-ptrace.c: Protect do_wait() by a mutex.
(_mono_debugger_server_setup_inferior): Wait until the target
actually stopped.
2004-03-03 Martin Baulig <>
* backend/server/i386-ptrace.c (mono_debugger_server_initialize):
Catch mono's thread abort signal and call pthread_exit(NULL) in it.
2004-03-03 Martin Baulig <>
* backends/Debugger.cs (DebuggerBackend.Run): Changed return type
to void; don't wait until the application is started.
* backends/ThreadManager.cs (ThreadManager.StartApplication):
Changed return type to void.
(ThreadManager.WaitForApplication): New public method.
(ThreadManager.ReachedMain): Fire the events here.
2004-03-03 Martin Baulig <>
* lib/: Removed.
* lib/ Removed.
* lib/ Removed.
* lib/ Build everything in ../wrapper/.
* wrapper/ Moved here from ../lib.
* wrapper/ Call it mdb.exe instead of Interpreter.exe.
* classes/ProcessStart.cs: The `mono-debugger-mini-wrapper' is now
always in the same directory than Mono.Debugger.dll; use this to
setup the 'Path_Mono'.
2004-03-02 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoSourceMethod.IsLoaded): Call ensure_method().
* frontends/scripting/Expression.cs (SourceExpression): Added
support for source file and line number.
* frontends/scripting/Parser.jay (source_expression): Added
2004-03-02 Mike Kestner <>
* : expand
* : install pc and dist
* new
2004-03-02 Martin Baulig <>
* backends/SingleSteppingEngine (EndStackAddress): New internal field.
(AcquireThreadLock): Return void; if we have an `EndStackAddress',
write our esp into it.
* backends/MonoThreadManager.cs: Added back GC support.
2004-03-02 Martin Baulig <>
* Bumped version number to 0.6. This is not a
release, but 0.5 was the old Clemson release.
2004-03-02 Martin Baulig <>
* classes/SimpleBreakpoint.cs: Added simpler .ctor.
2004-01-16 Martin Baulig <>
* classes/BreakpointHandle.cs: The .ctors don't take a `Process'
argument anymore; you need to call EnableBreakpoint() to actually
enable the breakpoint.
2004-01-16 Martin Baulig <>
* interfaces/IMethod.cs (IMethodSource): Removed this interface;
the abstract class `MethodSource' is identical to this interface.
* classes/MethodSource.cs (MethodSource.MethodLookup): Removed.
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Removed the
old method lookup code.
* lib/SymbolFileReader.cs: Removed.
2004-01-16 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Merged
MonoSymbolFile and MonoModule.
2004-01-16 Martin Baulig <>
* arch/Bfd.cs: Merged with BfdModule.
* arch/BfdModule.cs: Removed.
2004-01-16 Martin Baulig <>
* classes/Module.cs: Made this class abstract and merge it with
ModuleData; modules can't be "unloaded" anymore.
* classes/ModuleData.cs: Removed.
2004-01-16 Martin Baulig <>
* backends/BreakpointManager.cs (BreakpointManager.Handle):
Removed this class; BreakpointManager now uses `Breakpoint'.
* backends/Process.cs (Process.InsertBreakpoint): Just take a
`Breakpoint' and a `TargetAddress'.
* classes/Breakpoint.cs (Breakpoint.ThreadGroup): New property.
(Breakpoint.Breaks): New method; moved here from BreakpointHandle.
* classes/ModuleData.cs (ModuleData.EnableBreakpoint): Removed.
(ModuleData.DisableBreakpoint): Removed.
* classes/SimpleBreapoint.cs: Added .ctor which takes a
BreakpointCheckHandler and a BreakpointHitHandler delegate.
2004-01-16 Martin Baulig <>
Merged Mono.Debugger.dll and Mono.Debugger.Backend.dll.
* backends/classes/NativeModule.cs: Removed.
* backends/Debugger.cs: Removed the breakpoint code from here.
* backends/SingleSteppingEngine.cs: We can now step over
breakpoints again.
* classes/Breakpoint.cs (Breakpoint.Enabled): Removed this
* classes/BreakpointHandle.cs: Reworked this class; it's now
public and you call EnableBreakpoint() and DisableBreakpoint() on
it to enable/disable breakpoints.
* classes/Module.cs: Removed the breakpoint code from here.
2004-01-15 Martin Baulig <>
* classes/TargetEvent.cs (TargetEventType): Added `FrameChanged'.
* backends/SingleSteppingEngine.cs: Emit a
TargetEventType.FrameChanged event after completing a callback.
2004-01-15 Martin Baulig <>
* frontends/scripting/Expression.cs (SourceExpression): The .ctor
now just takes a VariableExpression and line number. We try to
resolve the expr as a method and then use the new
ITargetFunctionType.Source to get its source.
(VariableExpression): Added virtual `DoResolveBase' which is
always called before any of the other `DoResolve*' methods.
2004-01-15 Martin Baulig <>
* interfaces/ITargetFunctionType.cs (Source): New property.
2004-01-15 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend: Renamed
`MonoSymbolTableReader' to `MonoSymbolfile'.
* backends/mono-csharp/: We're now passing the `MonoSymbolFile'
instead of the `MonoSymbolTable' to the types.
2004-01-15 Martin Baulig <>
The big rewrite and cleanup.
The debugger now requires either Red Hat 9 or glibc 2.3.x and a
2.6.0 kernel. It does not work with a 2.4.x kernel except the
one from Red Hat 9.
* backends/Process.cs: This is now in backends again, it is a
public (non-abstract) class and contains the "user interface" of
the SingleSteppingEngine.
* backends/SingleSteppingEngine.cs: This is now just the engine
itself; we create on SingleSteppingEngine class per target thread,
but they're all managed from the ThreadManager and we just have
one thread in the debugger.
* backends/ThreadManager.cs: Contains the main event loop and
dispatches events and commands to the SingleSteppingEngines.
2003-12-29 Martin Baulig <>
Everything newer than the Clemson release is highly experimental
and will not work out-of-the-box. You should not use the CVS
version of the debugger unless you know exactly what you're doing.
2003-12-25 Martin Baulig <>
* backends/server/: Removed the `InferiorInfo' vtable; call the
functions directly.
* backends/server/library.c: Removed.
* backends/server/i386-ptrace.c: Call functions
`mono_debugger_server_*' and make them public.
2003-12-15 Martin Baulig <>
* classes/GnuReadLine.cs: Check whether readline is supported and
use Console.ReadLine() if not.
* glue/Check whether readline is supported.
2003-12-15 Martin Baulig <>
* Allow windows.
(glue_cflags, server_cflags): AC_SUBST() them.
* backends/server/i386-win32.c: Initial windows port.
2003-12-15 Martin Baulig <>
* arch/bfdglue.c (bfd_glue_elfi386_locate_base): This is only
supported on Linux and FreeBSD.
2003-12-15 Martin Baulig <>
* backends/IInferior.cs (IInferior): Made this interface internal.
(IInferior.RuntimeInvoke, IInferior.GetRegister): Removed; they're
inherited from ITargetAccess.
* backends/ILanguageBackend.cs: Made this interface internal.
* backends/DaemonThreadRunner.cs: Made this class internal.
* backends/Process.cs (Process.TargetOutput, DebuggerOutput,
DebuggerError): Made these events public.
* backends/SingleSteppingEngine.cs: Made the .ctor internal.
2003-12-15 Martin Baulig <>
* classes/IOChannel.cs (Spawn): Removed this obsolete class.
* glue/iochannel.c (mono_debugger_glue_kill_process): Removed.
2003-12-15 Martin Baulig <>
* backends/IInferior.cs (IInferior): Added properties for the
signal numbers.
* backends/ptrace/PTrace.cs: We're now getting the signal numbers
in a `SignalInfo' structure from the inferior; the corresponding
properties are no longer static.
2003-12-15 Martin Baulig <>
* backends/server/: Did some API cleanups; separate
architecture-specific code a bit more.
* backends/server/i386-arch.c (ArchInfo): New struct; store all
architecture-specific stuff here.
2003-12-09 Martin Baulig <>
Released version 0.5 "Clemson" of the Mono Debugger :-)
2003-11-06 Martin Baulig <>
* Completely disable the GUI for the moment.
2003-09-13 Martin Baulig <>
* arch/ArchitectureI386.cs (ArchitectureI386.UnwindStack): Use
`(long) (uint)' instead of just `(long)' to make this work for
registers having "negative" values (0xbfffffec for instance).
* frontends/scripting/ScriptingContext.cs
(FrameHandle.PrintVariable): Format this nicely.
2003-09-08 Martin Baulig <>
* frontends/scripting/: When invoking a method with the `call'
command, debug the invoked method. See the NEWS file for details.
* backends/IInferior.cs (IInferior.CallInvokeMethod): Removed.
(IInferior.RuntimeInvoke): New method; there are two overloaded
versions: one is similar to the old CallInvokeMethod() and the
other one allows us to debug the invoked method.
* backends/ILanguageBackends.cs
(ILanguageBackend.RuntimeInvokeFunc): New property.
(ILanguageBackend.CompileMethod): New method.
* backends/SingleSteppingEngine.cs
(SingleSteppingEngine.CallInvokeMethod): Renamed to RuntimeInvoke().
(SingleSteppingEngine.RuntimeInvoke): Added overloaded version
which allows us to debug the invoked function.
* interfaces/ITargetFunctionObject.cs
(ITargetFunctionObject.Invoke): Added `bool debug' argument; if
true, debug the invoked method.
* interfaces/ITargetFunctionType.cs
(ITargetFunctionType.Invoke): Added `bool debug' argument; if
true, debug the invoked method.
2003-09-07 Martin Baulig <>
* interfaces/ITargetStructType.cs
(ITargetStructType.Constructors): New property.
(ITargetStructType.GetConstructor): New method.
* frontends/scripting/Parser.jay (variable_expression): Added `new
type (args)' syntax to invoke a constructor.
2003-08-12 Martin Baulig <>
* classes/StackFrame.cs (StackFrame.GetRegister): Removed.
(StackFrame.GetRegisterLocation): New public method.
* backends/native/NativeLanguage.cs: The .ctor now takes an
ITargetInfo because NativePointerType needs the target address
* backends/native/NativePointerType.cs: Always set the correct
* frontends/scripting/VariableExpression.cs
(RegisterExpression.ResolveLocation): New public method. This is
used when resolving an `x %eax'.
2003-08-11 Martin Baulig <>
* frontends/scripting/Parser.jay: Use a colon instead of a dot to
separate a type name and its static member. This deambiguates the
grammar and also allows things like
'print System.DateTime:MinValue.Ticks'.
2003-08-11 Martin Baulig <>
* frontends/scripting/ScriptingContext.cs
(ScriptingContext.Print): Don't call String.Format() on already
formatted strings; this'll cause problems if the string contains
any '{' or '}'s.
2003-08-11 Martin Baulig <>
* backends/IInferior.cs (IInferior.CallMethod): This method now
takes two `long' arguments.
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoSymbolTable.LookupType): Call `mono_debugger_lookup_type ()'
in the JIT to do the actual lookup.
2003-08-07 Martin Baulig <>
* interfaces/ILanguage.cs (ILanguage.LookupType): New method.
* interfaces/ITargetStructType.cs
(ITargetMemberInfo): New public interface.
(ITargetFieldInfo, ITargetPropertyInfo, ITargetMethodInfo): Derive
from ITargetMemberInfo.
* frontends/scripting/Parser.jay: Added `Type.StaticField',
`Type.StaticProperty' and `Type.StaticFunc (args)' syntax to
access static members of a type without an instance.
2003-08-06 Martin Baulig <>
* backends/mono-cshap/MonoClass.cs: Added support for static
fields, properties and methods.
* interfaces/ITargetMemoryAccess.cs (ITargetAccess.CallMethod):
Added new overloaded version of this method.
* interfaces/ITargetStructType.cs (ITargetStructType): Added
StaticFields, StaticProperties and StaticMethods properties and
GetStaticField(), GetStaticProperty() and GetStaticMethod()
2003-08-06 Martin Baulig <>
* backends/mono-csharp/MonoStringType.cs: We don't get the vtable
from the JIT anymore; instead we call mono_string_new_wrapper()
via a special wrapper method to make this work for multiple
application domains.
2003-08-04 Martin Baulig <>
* backends/mono-csharp/*.cs: Completely reworked the type support.
We're now just creating one single `MonoType' instance per type;
arrays, strings and enums now also derive from MonoClass which
allows us to access the System.Array, System.String and
System.Enum members.
2003-07-28 Martin Baulig <>
* frontends/scripting/Tokenizer.cs: Allow identifiers to be quoted
in apostrophs (').
* frontends/scripting/VariableExpression.cs
(StructAccessExpression): Do a simple overload resolution for methods.
2003-07-22 Martin Baulig <>
* backends/mono-csharp/MonoClass.cs: New class. This is now used
for class and value types and also for fundamental types; it
allows us to call things like `Substring(int)' on a string.
* backends/mono-csharp/MonoStructType.cs: Moved most of this class
into MonoClass.
* backends/mono-csharp/MonoFundamentalType.cs: Derive from
MonoStructType since a fundamental type is also a valuetype.
2003-07-20 Martin Baulig <>
Largely improved the type support. We can now invoke methods with
arguments and also modify variables.
* classes/TargetBinaryWriter.cs: New class.
* interfaces/ITargetFunctionObject.cs (Invoke): The method now
takes a `object[] args' argument.
* backends/mono-csharp/*.cs: Improved this a lot; the JIT is now
providing us with better type information and explicitly tells us
about builtin types; added support to call methods with arguments;
it's now possible to modify variables.
2003-07-12 Martin Baulig <>
* backends/mono-csharp/MonoStructType.cs: We can now call a
property's getter function.
2003-07-12 Martin Baulig <>
Started to added support for calling methods in the target.
* classes/TargetLocation.cs (TargetMemoryAccess): Renamed to
TargetAccess and changed type to ITargetAccess.
* classes/StackFrame.cs: Likewise.
* classes/RelativeTargetLocation.cs: Made this public.
* interfaces/ITargetFunctionType.cs (HasReturnValue): New
* interfaces/ITargetMemoryAccess.cs
(ITargetAccess.CallInvokeMethod): New method.
* interfaces/ITargetStructObject.cs
(ITargetStructObject.GetMethod): New method.
(ITargetStructObject.InvokeMethod): Removed.
* frontends/scripting/Parser.jay: Added `!!' expression which is
the last VariableExpression which was printed, ie. you can say
`print !!' to see the last expression again.
Added '$foo.method ()' syntax to invoke that method.
2003-07-11 Martin Baulig <>
Added support to modify variables of fundamental types.
* interfaces/ITargetMemoryAccess.cs
(ITargetMemoryAccess.WriteBuffer): We don't need a `size' argument
here since we can just use the buffer's length.
* interfaces/ITargetFundamentalObject.cs
(ITargetFundamentalObject.Object): Added setter to this property.
* frontends/scripting/Parser.jay: Added a `set $variable =
<expression>' command to modify variables.
2003-07-10 Martin Baulig <>
* backends/server/server.h (StackFrame): Replaced the
`locals_address' and `params_address' fields with `frame_address'.
* backends/ptrace/PTrace.cs (PTraceInferior.StackFrame): Added
`FrameAddress' field. We need to keep this structure in sync with
StackFrame in server.h.
* arch/ArchitectureI386.cs (UnwindStack): Registers are stored as
`long's, not as `uint's.
2003-07-05 Martin Baulig <>
* arch/bfd/elf32-target.h, peigen.c, targmatch.h: Include these
generated files in CVS and don't rebuild them.
2003-07-05 Martin Baulig <>
* interfaces/IProcess.cs (GetBacktrace): Added overloaded version
which takes an `int max_frames' argument.
* frontends/scripting/Parsing.jay: The `bt' command now takes an
optional integer argument which is the maximum number of frames to
include in the backtrace.
2003-07-05 Martin Baulig <>
Released version 0.4 "New York City" of the Mono Debugger :-)
2003-07-04 Martin Baulig <>
* backends/DaemonThreadRunner.cs: Rewrote this to use the
SingleSteppingEngine. This allows us to debug daemon threads if
they ever crash.
* backends/Process.cs: Don't give daemon processes negative IDs.
* frontends/scripting/ScriptingContext.cs: Don't hide daemon processes.
2003-06-30 Martin Baulig <>
* arch/bfd: Imported from binutils 2.13.2.
* arch/libiberty: Likewise.
* arch/ We now build a minimal libbfd here and include
it in the
2003-06-23 Martin Baulig <>
* interfaces/ITargetFunctionType.cs: New class.
* interfaces/ITargetFunctionObject.cs: New class.
* interfaces/TargetObjectKind: Added `function'.
* arch/DwarfReader.cs: More work on native type support.
2003-06-23 Martin Baulig <>
* arch/DwarfReader.cs: Improved native type support.
* backends/native/NativeOpaqueObject.cs: New class.
* backends/native/NativePointerObject.cs: New class.
* backends/native/NativePointerType.cs: New class.
* backends/native/NativeStructObject.cs: New class.
* backends/native/NativeStructType.cs: New class.
* frontends/scripting/Parser.jay: Added `$foo->test' syntax; allow
`*($foo.test)' syntax.
* frontends/scripting/Tokenizer.cs: Don't allow dots in identifiers.
2003-06-22 Martin Baulig <>
* backends/native/NativeStringType.cs: Derive from
* backends/native/NativeStringObject.cs: Derive from
2003-06-21 Martin Baulig <>
* interfaces/ITargetType.cs (GetObject): New method.
* interfaces/ILanguage.cs: New public interface.
* classes/Module.cs: Renamed `Language' to `LanguageBackend' and
added new `Language' property to return the ILanguage.
* classes/StackFrame (Language): New public property.
(GetRegister): Added overloaded version which takes the register
index and an offset and returns a ITargetObject.
* interfaces/ITargetObject.cs (Location): New property.
(Print): New function. Returns a stringified representation of
the object - suitable to be displayed to the user.
* interfaces/ITargetPointerObject.cs
(HasAddress, Address): New properties.
* interfaces/ITargetType.cs (GetObject): Made this method part of
the interface.
* interfaces/TargetObjectKind.cs: Added `Opaque'.
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoSymbolTable): Implement ILanguage.
* backends/mono-csharp/MonoOpaqueObject.cs: Don't implement
ITargetPointerObject. Opaque objects are opaque and no pointers.
* backends/mono-csharp/MonoOpaqueType.cs: Likewise.
* frontends/scripting/VariableExpression.cs (RegisterExpression):
Made this a VariableExpression.
* frontends/scripting/Parser.jay: Added an `examine' command to
examine memory. Syntax like gdb's `x' command.
2003-06-21 Martin Baulig <>
* classes/TargetLocation.cs: Moved here from
* classes/RelativeTargetLocation.cs: Moved here from
* classes/AbsoluteTargetLocation.cs: New public class.
2003-06-20 Martin Baulig <>
* doc/debugger.sxi: Added the slides from the GUADEC talk.
2003-06-20 Martin Baulig <>
* interfaces/IArchitecture.cs
(GetBreakpointTrampolineData): Removed.
(IsRetInstruction): Added ITargetMemoryAccess argument.
(GetCallTarget, GetTrampoline): Added ITargetAccess argument.
* arch/ArchitectureI386.cs: The .ctor doesn't take an
ITargetAccess argument anymore. This allows us to use the
IArchitecture in all threads, not just in the IInferior one.
* interfaces/IMethod.cs (GetTrampoline): Changed return type from
TargetAddress to SourceMethod; don't trigger a JIT compilation
* backends/ILanguageBackend.cs (GetTrampoline): Added overloaded
version which takes a TargetAddress and returns a SourceMethod.
This version doesn't trigger a JIT compilation can may be called
from all threads.
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoSymbolTable): Added AddImage() and GetImage() methods to get
a MonoSymbolTableReader from the TargetAddress of a `MonoImage *'.
(MonoSymbolTableReader): Implement ISimpleSymbolTable.
2003-06-20 Martin Baulig <>
* wrapper/wrapper.c, wrapper/thread-manager.c: Don't declare
variables as volatile which are not actually modified by the
2003-06-14 Martin Baulig <>
* backends/IInferior.cs (IInferiorStackFrame): Removed the
`LocalsAddress' and `ParamsAddress' properties.
* classes/StackFrame.cs: Likewise.
* backends/classes/MonoRegisterLocation.cs: Removed.
* backends/classes/MonoStackLocation.cs: Removed.
* backends/classes/MonoVariableLocatin.cs: This is now used for all
variables, no matter whether they're stored on the stack or in a
register. The JIT just distinguishes between variables which are
stored in a register and variables which are at an offset from a
register. This base register can be %ebp or any other register.
2003-06-13 Martin Baulig <>
* wrapper/wrapper.c: Use POSIX semaphores instead of the mono
io-layer. For some reason, using the mono io-layer doesn't work
on all systems.
2003-06-10 Martin Baulig <>
* arch/opcodes/: Imported from binutils 2.13.2.
* Don't require libopcodes and dis-asm.h, but use
the included libopcodes. Note that we still need libbfd for this.
2003-06-08 Martin Baulig <>
* frontends/gui/SourceView.cs: Made the context menu actually work.
2003-06-08 Martin Baulig <>
* frontends/gui/GotoLineDialog.cs: New dialog for "Edit / Goto Line".
2003-05-08 Martin Baulig <>
* arch/bfdglue.c (bfd_glue_openr): New function. We need to
g_strdup() the arguments since bfd_openr() takes their ownership,
but the P/Invoke wrapper would free it.
2003-05-08 Martin Baulig <>
* backends/mono-csharp/CSharpMethod.cs: Suppress duplicate line
* classes/MethodSource.cs: Re-enable the ObjectCache.
2003-05-04 Martin Baulig <>
* wrapper/mini-main.c: Always use MONO_OPT_SHARED.
2003-05-04 Martin Baulig <>
* Dropped support for the old JIT, alwasy use Mini.
* wrapper/main.c: Removed.
2003-04-27 Martin Baulig <>
Reworked the breakpoint code; we're now getting a callback from
the JIT when a method containing a breakpoint is JITed instead of
using the breakpoint trampoline.
* backends/ILanguageBackend.cs (BreakpointHit): Removed.
* backends/Debugger.cs (BreakpointHit): Removed.
* classes/ModuleData.cs (EnableBreakpoint, DisableBreakpoint):
Removed the ThreadGroup argument.
* classes/BreakpointManager.cs
(BreakpointManager.Handle): New public class.
(InsertBreakpoint, RemoveBreakpoint, LookupBreakpoint): New public
methods; this class is now responsible for actually inserting all
2003-04-22 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoSymbolFileTable.Reload): Don't load any referenced assemblies
here; we already get a notification from the metadata library when
it's loading them.
2003-04-21 Martin Baulig <>
Use a new libzvt based terminal widget to display the target's
output instead of the old Gtk.TextView based one.
* Require libzvt-2.0.
* widgets/sources/debuggerwidgets/debuggerterminal.[ch]: New
files. This is a new terminal widget using libzvt.
* widgets/Mono.Debugger.GUI.metadata: New file.
* frontends/gui/OutputWindow.cs: Use the new DebuggerTerminal widget.
2003-04-21 Martin Baulig <>
* backends/Debugger.cs (Quit): Removed.
* frontends/scripting/ScriptingContext.cs (process_events):
Removed, we don't need to run the glib main loop anymore to get
the target's output.
(PrintInferior): Call Write(), not WriteLine().
* backends/server/i386-ptrace.c (server_ptrace_spawn): Use two
socketpairs for the target's stdout/stderr and set them to O_ASYNC
to receive a SIGIO when output becomes available.
* backends/server/i386-linux-ptrace.c (do_wait): Use sigwait() to
wait for events from the target; handle I/O.
* backends/server/library.c (mono_debugger_server_initialize):
Block the signals in all threads, just unblock them in sigwait()
which is called from do_wait().
2003-04-17 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MethodAddress.ctor): Use the first and last source line as
MethodStartAddress and MethodEndAddress, not the prolog/epilog
data from the JIT.
* backends/SingleSteppingEngine.cs (get_step_frame): Return a
StepMode.SingleInstruction frame if we don't have source code, not
just null. This is required to handle JIT trampolines correctly
in a managed method for which we don't have source code.
* arch/ArchitectureI386.cs (GetCallTarget): Added support for the
`0xff 0x10' opcodes (call *(%eax)).
2003-04-16 Martin Baulig <>
* frontends/gui/Parser.jay: Added `run' command to restart an
application after it exited.
2003-04-16 Martin Baulig <>
* classes/ProcessStart.cs: Moved to ../backends/.
* backends/ProcessStart.cs (ProcessStart): Make this abstract.
(ProcessStart.Create): Take a `DebuggerOptions options' and a
`string[] args' argument; parse the arguments here.
* frontends/scripting/DebuggerOptions.cs: This is now part of
2003-04-15 Martin Baulig <>
* backends/BreakpointManager.cs: Correctly implement Dispose().
* backends/ThreadManager.cs (Dispose): Also kill the main process.
* backends/Process.cs (child_exited): Call Dispose().
* backends/DaemonThreadRunner.cs, SingleSteppingEngine.cs (Dispose):
Don't dispose the inferior here; this needs to be done by the
daemon thread itself to avoid a race condition.
2003-04-13 Martin Baulig <>
* classes/StackFrame.cs (ObjectInvalidHandler): New delegate.
(StackFrameHandler, StackFrameInvalidHandler): Removed.
(StackFrame.FrameInvalid): Renamed to FrameInvalidEvent and use
the new ObjectInvalidHandler.
* classes/Backtrace.cs (BacktraceInvalidHandler): Removed, use
ObjectInvalidHandler instead.
* classes/TargetEvent.cs: New public class. We're now sending a
single `TargetEvent' instead of the FrameChanged, FrameInvalid,
MethodChanged, MethodInvalid and StateChanged events.
* backends/SingleSteppingEngine.cs: Send a single TargetEvent
instead of the FrameChanged, FrameInvalid, MethodChanged,
MethodInvalid and StateChanged events. This makes things a lot
easier for the gui.
* frontends/gui/DebuggerWidget.cs, DebuggerManager.cs: Reflect
latest SingleSteppingEngine changes. Things are now a lot easier
here since we're just listening to one single event.
2003-04-13 Martin Baulig <>
* interfaces/ITargetObject.cs (ObjectInvalidHandler): Removed.
2003-04-12 Martin Baulig <>
* backends/SingleSteppingEngine.cs (TargetExitedEvent): New event.
(Kill): Just call Dispose() here, this does everything for us.
* backends/ThreadManager.cs (Kill): New public method. The is the
recommended API to kill the application being debugged.
* backends/DaemonThreadRunner.cs, Debugger.cs, Process.cs,
SingleSteppingEngine.cs, ThreadManager.cs (Dispose): Make this
* frontends/scripting/Parser.jay: Make the `kill' command kill the
whole application, not just one process.
2003-04-10 Martin Baulig <>
* interfaces/ITargetNotification.cs
(TargetOutputHandler): Added `bool is_stderr' argument.
(DebuggerOutputHandler): New public delegate.
(TargetOutput, TargetError, DebuggerOutput, DebuggerError):
Removed these events.
* backends/ThreadManager.cs
(TargetOutput): Renamed to `TargetOutputEvent'.
(TargetError): Removed; we're now using one event for TargetOutput
and TargetError.
(TargetOutputEvent): Listen to this event to get the target's
stdout and stderr.
(DebuggerOutputEvent, DebuggerErrorEvent): New public events.
2003-04-10 Martin Baulig <>
* backends/server/library.c (mono_debugger_server_spawn): Return
the error message as string, not as GError.
* backends/ptrace/PTrace.cs (Run): Include the actual error
message from the target in the CannotStartTargetException.
* backends/SingleSteppingEngine.cs: Catch the exception we get if
we cannot start / attach to the target and pass it to the caller.
2003-04-10 Martin Baulig <>
* backends/mono-csharp/MonoVariable.cs: Use correct scope info for
2003-04-10 Martin Baulig <>
* backends/ThreadManager.cs (TargetOuput, TargetError): New public
events; use them to get the target's stdout and stderr instead of
the events in Process.
2003-04-10 Martin Baulig <>
* frontends/gui/DebuggerGUI.cs: Don't make the "About" dialog
2003-04-07 Martin Baulig <>
* frontends/gui/ProgramToDebug.cs: Added a Gtk.Entry to specify the
JIT optimizations. See `mini --help' for a list of optimization
options [FIXME: we should add a real GUI element for this].
2003-04-07 Martin Baulig <>
* Require mono and mini for the moment.
* wrapper/ Build a `mono-debugger-jit-wrapper' for the
old JIT and a `mono-debugger-mini-wrapper' for the new one.
* wrapper/mini-main.c: New file. This is the main.c for Mini.
* lib/ Make `mono-debugger-mini-wrapper' the default;
we're now using the new JIT in the debugger.
2003-04-07 Martin Baulig <>
Released version 0.3 "The White Mountains" of the Mono Debugger :-)
2003-04-06 Martin Baulig <>
* New file. Please read it before compiling the
* RELEASE-NOTES-0.3.txt: New file.
2003-04-05 Martin Baulig <>
* wrapper/thread-manager.c: Reflect latest libgc API changes.
2003-03-31 Martin Baulig <>
* wrapper/mono-debugger-jit-wrapper.h (MonoDebuggerThread): New
type. We create an instance of this type for each thread.
* backends/ThreadManager.cs (AcquireGlobalThreadLock): Write the
stopped thread's stack pointers into the corresponding
MonoDebuggerThread structure so they can be accessed from the
unmanaged code.
* backends/SingleSteppingEngine.cs (AcquireThreadLock): Return the
stopped thread's registers.
2003-03-31 Martin Baulig <>
* Require the new libgc.
2003-03-30 Martin Baulig <>
* wrapper/thread-manager.c
(mono_debugger_thread_manager_acquire_global_thread_lock): New
function. Calls ThreadManager.AcquireGlobalThreadLock() via a
callback function.
(mono_debugger_thread_manager_release_global_thread_lock): Release
the lock again.
* wrapper/icall.c
New interncalls; this is just to test the thread lock until we
hooked it into boehm.
2003-03-30 Martin Baulig <>
* backends/ThreadManager.cs (mono_thread_manager): Fixed a bug to
make this actually work; don't insert a breakpoint, but pass the
stop address to SingleSteppingEngine.Continue() and then wait
until it has stopped again.
2003-03-30 Martin Baulig <>
* backends/SingleSteppingEngine.cs: Run the BreakpointHitHandler()
from the ready_event_handler() because it should be run after the
target state has changed to TargetState.STOPPED and the
corresponding notification has been sent.
2003-03-28 Martin Baulig <>
* backends/ThreadManager.cs (SignalHandler): Ignore SIGPWR and
SIGXCPU since they're used by the garbage collector.
2003-03-28 Martin Baulig <>
* arch/Bfd.cs: Read the dynamic symbol table and make it available
via the ISimpleSymbolTable. This finally gives us function names
from shared libraries in backtraces.
2003-03-28 Martin Baulig <>
Use a special ISimpleSymbolTable to lookup function names in
backtraces. This simple symbol table may also be available if
there's no debugging info for a module.
* interfaces/ISymbolTable.cs
(ISymbolLookup): Removed SimpleLookup().
(ISimpleSymbolTable): New public interface.
* interfaces/IDisassembler.cs (SymbolTable): Return an
ISimpleSymbolTable, not an ISymbolTable.
* classes/SymbolTableManager.cs (SymbolTableHandler): Added
ISimpleSymbolTable argument to this delegate.
(SimpleSymbolTable): New public property.
* classes/SimpleSymbolTableCollection.cs: New public class.
* classes/ModuleData.cs (SimpleSymbolTable): New public property.
* classes/Module.cs (SimpleSymbolTable): New public property.
* clases/MethodBase.cs (SimpleLookup): Removed.
2003-03-28 Martin Baulig <>
* arch/BfdModule.cs (SymbolsLoaded): Always return true since we
always have at least the simple symbol table. This is necessary
to get function names for functions in shared libraries without
debugging info.
2003-03-28 Martin Baulig <>
* wrapper/main.c: Call mono_config_parse() and mono_set_rootdir().
2003-03-25 Martin Baulig <>
* frontends/gui/SourceList.cs (InsertBreakpoint): Implemented.
2003-03-25 Martin Baulig <>
* frontends/gui/ Splitted locals and params display.
* frontends/gui/VariableDisplay.cs: Started to fix this.
2003-03-25 Martin Baulig <>
* frontends/gui/SourceManager.cs: Use a single SourceList for all
source files.
* frontends/gui/SourceList.cs: Added "Duplicate View" item to the
context menu to create another view of this source file.
2003-03-24 Martin Baulig <>
* frontends/gui/SourceManager.cs (CreateSourceView): Pass the full
pathname to the SourceList's .ctor.
* frontends/gui/SourceList.cs: We need to use the full pathname
when searching a breakpoint location
2003-03-24 Martin Baulig <>
* frontends/gui/ Disable the popup menu in the
* frontends/gui/SourceList.cs: Embed the setting of the contents
in BeginNotUndoableAction()/EndNotUndoableAction().
* frontends/gui/ProgramToDebug.cs: Don't make the dialog modal and
don't use Dialog.Run().
2003-03-23 Martin Baulig <>
* frontends/scripting/DebuggerOptions.cs (--jit-optimizations):
New command line argument to specify the optimization flags for
the new JIT. This is the same than the --optimize argument of the
new JIT.
* wrapper/main.c (main): The second command line argument now
contains the optimization flags.
2003-03-23 Martin Baulig <>
* classes/ProcessStart.cs (SetupEnvironment): Pass all environment
variables to the target.
2003-03-23 Martin Baulig <>
* classes/ProcessStart.cs (CommandLine): New public property.
* frontends/gui/DebuggerGUI.cs (StartProgram): Use just the name
of the managed application, not the full command line including
the wrapper in the title.
2003-03-22 Martin Baulig <>
* classes/ProcessStart.cs: Moved here from ../backends/.
* backends/ProcessStart.cs: Moved to ../classes/.
* frontends/scripting/DebuggerOptions.cs: New file. Moved
`MyOptions' from ScriptingContext.cs here, renamed it to
DebuggerOptions and made it public. This class handles the
parsing of the command line arguments.
* frontends/scripting/ScriptingContext.cs
(ScriptingContext..ctor): Added DebuggerOptions argument.
(ScriptingContext.Start): Return the ProcessStart, don't call Run().
(ScriptingContext.ParseArguments): Removed.
(ScriptingContext.Run): Call Initialize() here.
* frontends/gui/DebuggerGUI.cs: Use the new DebuggerOptions class
to parse the command line arguments.
2003-03-22 Martin Baulig <>
* doc/guadec-abstract.txt: Added the abstract of my GUADEC talk.
2003-03-22 Martin Baulig <>
* interfaces/IVariable.cs (IsValid): Renamed to CheckValid() and
added IsAlive().
* backends/mono-csharp/MonoVariable.cs: Only use scope and
liveness info if we actually have it.
* backends/mono-csharp/MonoType.cs (CheckValid): New method.
Checks whether the location is actually valid.
* backends/mono-csharp/MonoTargetLocation.cs (Address): Return
TargetAddress.Null on error; don't attempt to dereference null
pointers, just return TargetAddress.Null.
2003-03-21 Martin Baulig <>
* doc/FAQ.txt: Updated documentation about JIT trampolines and
debugging interncalls.
2003-03-21 Martin Baulig <>
* classes/Module.cs (HasDebuggingInfo): New public property.
* frontends/scripting/ScriptingContext.cs (ShowModules): Ignore
modules without debugging info.
2003-03-21 Martin Baulig <>
* backends/SingleSteppingEngine.cs (StepNativeInstruction):
New public method. Steps one machine instruction and always
enters all method calls, including trampolines.
* frontends/scripting/Parser.jay: Added `native stepi' command
for it.
2003-03-16 Martin Baulig <>
* interfaces/IMethod.cs (GetTrampoline): New method.
* interfaces/IDisassembler.cs (DisassembleInstruction): Added
`IMethod method' argument.
* classes/AssemblerMethod.cs: The BfdDisassembler now calls the
.ctor with an array of AssemblerLine's.
* arch/Bfd.cs: Added support for ELF jump tables.
* arch/BfdModule.cs (Language): Return the Bfd, which now
implements ILanguageBackend.
* backends/ILanguageBackend.cs (Modules): Removed this property.
* backends/Process.cs (DisassembleInstruction): Removed.
2003-03-16 Martin Baulig <>
* arch/DwarfReader.cs: Fixed a bug to make shared libraries work
2003-03-14 Martin Baulig <>
* classes/StackFrame.cs (Locals): New public property. Returns
just the locals which are actually accessible at the current
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Actually use
the scope information from the symbol file.
2003-03-13 Martin Baulig <>
* test/TestLexicalScopes.cs: New tests. The debugger should only
display one variable called `a' at a time.
2003-03-12 Martin Baulig <>
* frontends/gui/DebuggerManager.cs: New file. Do all this event
notification stuff here instead of doing it on a per-widget level
in DebuggerWidget.
2003-03-12 Martin Baulig <>
* frontends/gui/ProcessManager.cs: Removed, this was way too immature.
* frontends/gui/LineDebugStatusbar.cs: Removed.
2003-03-12 Martin Baulig <>
* frontends/gui/FileOpenDialog.cs: New file. This is a customized
Gtk.FileSelection which has a list of all source files.
2003-03-11 Martin Baulig <>
* frontends/gui/DebuggerGUI.cs: Implemented "File / Open".
2003-03-11 Martin Baulig <>
* frontends/scripting/SourceManager.cs: The text in the source
buffer must always be terminated with a newline.
2003-03-11 Martin Baulig <>
* backends/SingleSteppingEngine.cs (do_next): Step one instruction
unless this is actually a call.
2003-03-11 Martin Baulig <>
* frontends/gui/DebuggerGUI.cs: Use Log.PrintTraceLogFunction for
glib and gtk+ to get backtraces.
2003-03-11 Martin Baulig <>
* backends/Debugger.cs (FindLocation): New convenience function.
Walks the module list and calls FindLocation() on all modules
until finding a match - or returns null.
* frontends/scripting/ScriptingContext.cs (FindLocation): Call
DebuggerBackend.FindLocation() and throw the ScriptingException if
* frontends/gui/SourceManager.cs: Use
DebuggerBackend.FindLocation, not ScriptingContext.FindLocation.
* frontends/gui/DebuggerGUI.cs (Context): Removed this property.
2003-03-10 Miguel de Icaza <>
* frontends/gui/SourceList.cs: Generate an informational message
2003-03-10 Martin Baulig <>
* backends/SingleSteppingEngine: When debugging managed code,
don't step into methods without debugging info.
2003-03-10 Martin Baulig <>
* classes/SourceInfo.cs (SourceFile.Name): New property.
* classes/MethodSource.cs (IMethodSource.Name): Return the
SourceFile.Name, not the SourceFile.FileName.
2003-03-09 Martin Baulig <>
* frontends/gui/: Added .ctors which take the glade name instead
of a widget.
2003-03-09 Martin Baulig <>
* frontends/gui/: Added "File / Open" menu item to open a source
view. Not yet implemented, though.
2003-03-09 Martin Baulig <>
* test/TestSourceView.cs: Small test app for the Gtk.SourceView.
2003-03-09 Martin Baulig <>
* frontends/command-line/Interpreter.cs (ProcessCommand): Repeat
the last command when called with an empty string.
2003-03-09 Martin Baulig <>
* backends/ProcessStart.cs
(Path_Mono, Environment_Path, Environment_LibPath): Made them
static and writable.
* frontends/scripting/ScriptingContext.cs (--jit-wrapper): New
command line argument to override the ProcessStart.Path_Mono.
2003-03-09 Martin Baulig <>
* Set version number to 0.2.3. The next release
will be 0.3 "White Montains".
2003-03-09 Martin Baulig <>
Released version 0.2.2 "Cambridge" of the Mono Debugger :-)
2003-03-07 Martin Baulig <>
* Check whether we're compiling from CVS and only
check for gapi_codegen.exe if we do so.
* widgets/generator/ (USE_GAPI_CODEGEN): New automake
conditional; don't rebuild if it's false.
2003-03-07 Martin Baulig <>
* Set version number to 0.2.2.
2003-03-05 Martin Baulig <>
* wrapper/wrapper.c: This file was formerly known as main.c.
* wrapper/main.c: Moved everything but a very simple main()
function into wrapper.c.
* Create a static libmonodebuggerwrapper.a library
containing everything but the main().
2003-03-04 Martin Baulig <>
* widgets/generator/ Only rebuild things if we're in
maintainer mode.
* widgets/*/generated/: Include the generated files in the
distribution since we aren't rebuilding them in the tarballs.
2003-03-04 Martin Baulig <>
* Improved the gtk# check; actually check for
gapi_codegen.exe and don't build the GUI if we can't find gtk#.
2003-03-04 Martin Baulig <>
* RELEASE-NOTES-0.2.2.txt: New file. This is more or less a copy
of the RELEASE-NOTES-0.2.0.txt.
* NEWS: Added a few news entries.
2003-03-03 Martin Baulig <>
* frontends/scripting/Generator.cs (Generator.PrintHelp): New
method. Takes whatever the user entered after the `help' command
as a string and prints the help.
* frontends/scriptings/Tokenizer.cs (token): If we encounter a
Token.HELP, consume the rest of the line and pass it to
2003-03-03 Martin Baulig <>
* frontends/scripting/Generator.cs: New file.
* frontends/scripting/Command.cs: Added a [Command] attribute to
all commands.
* frontends/scripting/Expression.cs: Added an [Expression]
attribute to all expressions.
2003-03-03 Martin Baulig <>
* frontends/scripting/Command.cs (HelpCommand): Removed.
2003-03-03 Martin Baulig <>
* frontends/scripting/Parser.jay (command): Splitted into
`generated_command', `other_command' and `assert_command' and
removed the "help" command.
* frontends/scripting/Expression.cs
(ProgramArgumentsExpression): New expression.
2003-03-03 Martin Baulig <>
* frontends/scripting/Expression.cs
(BreakpointNumberExpression): New expression.
2003-03-03 Martin Baulig <>
* frontends/scripting/Expression.cs
(ModuleOperationListExpression): New expression.
2003-03-03 Martin Baulig <>
* frontends/scripting/Expression.cs
(ModuleListExpression, SourceListExpression, ProcessListExpression):
New expressions.
2003-03-03 Martin Baulig <>
* frontends/scripting/Command.cs (StepCommand): Use a separate
class for the individual stepping commands.
2003-03-03 Martin Baulig <>
* frontends/scripting/ScriptingContext.cs
(FrameHandle, BacktraceHandle): New public classes.
* frontends/scripting/Expression.cs
(FrameExpression): New expression.
* frontends/scripting/Parser.jay: Use the new FrameExpression
instead of a ProcessExpression and a frame number.
2003-03-03 Martin Baulig <>
* frontends/scripting/Command.cs: Moved some stuff into the
following three new files.
* frontends/scripting/Expression.cs: New file.
* frontends/scripting/VariableExpression.cs: New file.
* frontends/scripting/AssertCommand.cs: New file.
2003-03-01 Martin Baulig <>
* frontends/scripting/ScriptingContext.cs: Automatically run newly
created threads in the background.
2003-03-01 Martin Baulig <>
* arch/DwarfReader.cs: Ignore line numbers from other source files
(macros or #include'd files, for instance).
2003-03-01 Martin Baulig <>
* classes/SourceFileFactory.cs: Cache the file contents in an
* backends/Debugger.cs (SourceFileFactory): New public property.
* interfaces/IMethod.cs (IMethodSource.SourceBuffer): Always
return the method contents here, also when the method belongs to
an actual source file.
2003-02-27 Martin Baulig <>
* frontends/gui/SourceManager.cs (GetSourceView): Use the
SourceFile / ISourceBuffer as hash key, not the IMethodSource.
2003-02-27 Martin Baulig <>
* backends/server/server.h (CommandError): Cleaned this up.
* backends/ptrace/PTrace.cs: Throw a TargetMemoryException if
reading from the target's memory failed.
* classes/TargetException.cs (LocationInvalidException): Added
.ctor which takes a TargetException.
* backends/native/*: Pass TargetExceptions to the
LocationInvalidException's .ctor.
* backends/mono-csharp/*: Likewise.
2003-02-27 Martin Baulig <>
* backends/native/NativeStringObject.cs (ReadString): Quote
non-printable characters in the returned string, read at most
MaximumDynamicSize chars.
2003-02-26 Martin Baulig <>
* backends/SingleSteppingEngine.cs (check_method_operation):
Enable this for native methods as well.
2003-02-26 Martin Baulig <>
* backends/native/NativeStringType.cs: New file.
* backends/native/NativeStringObject.cs: New file.
* arch/DwarfReader.cs: Cleaned up the API a bit and added support
for strings.
2003-02-26 Martin Baulig <>
* arch/DwarfReader.cs: Started to add support for native types to
access parameters and local variables in native methods.
2003-02-26 Martin Baulig <>
* backends/native/: New directory.
* backends/native/NativeFundamentalObject.cs: New file.
* backends/native/NativeFundamentalType.cs: New file.
* backends/native/NativeObject.cs: New file.
* backends/native/NativeOpaqueType.cs: New file.
* backends/native/NativeType.cs: New file.
2003-02-26 Martin Baulig <>
Moved MonoTargetLocation.cs, MonoRelativeTargetLocation.cs,
MonoStackLocation.cs and MonoRegisterLocation.cs from
backends/mono-csharp/ to backends/classes/ and put them into the
Mono.Debugger.Backends namespace.
* backends/classes/MonoTargetLocation.cs: Moved here.
* backends/classes/MonoRelativeTargetLocation.cs: Moved here.
* backends/classes/MonoStackLocation.cs: Moved here.
* backends/classes/MonoRegisterLocation.cs: Moved here.
2003-02-25 Martin Baulig <>
* classes/SourceInfo.cs (SourceFile.FindMethod): Renamed the
overloaded version which took a line into FindLine () and changed
its return type to SourceLocation.
* classes/Module.cs (FindMethod): Renamed the overloaded version
which took a filename and line to FindLocation() and changed its
return type to SourceLocation.
2003-02-24 Martin Baulig <>
* interfaces/IMethod.cs (IMethodSource.SourceMethod): New property.
* classes/SourceAddress.cs (SourceLocation): New property.
2003-02-24 Martin Baulig <>
* interfaces/ISourceBuffer.cs (ISourceBuffer.HasContents): Removed
this property; from now on, an ISourceBuffer always has contents.
(ISourceBuffer.Contents): Changed the type of this property from
`string' to `string[]'; it returns the source file splitted into
lines (it turned out to be more useful that way).
* interfaces/IMethod.cs (IMethodSource): Added Name, IsDynamic,
SourceBuffer and SourceFile properties.
* classes/SourceAddress.cs (SourceAddress.Buffer): Removed this
(SourceAddress.MethodSource): New public property.
2003-02-24 Martin Baulig <>
* classes/SourceInfo.cs: Renamed `SourceInfo' into `SourceFile'
and `SourceMethodInfo' into `SourceMethod'.
2003-02-24 Martin Baulig <>
* classes/SourceFileFactory.cs (SourceFileFactory.FindFile):
Return an ISourceBuffer.
(SourceFile): Removed.
2003-02-24 Martin Baulig <>
* classes/SourceLocation.cs: New public class.
* classes/BreakpointHandle.cs (BreakpointHandleMethod): Merged all
the functionality into `BreakpointHandle' and removed this class.
* classes/Module.cs (Module.AddBreakpoint): Take a SourceLocation.
2003-02-24 Martin Baulig <>
* backends/Process.cs (Kill): Send the event and call Dispose ().
* backends/ThreadManager.cs (process_exited): Use Process.Kill()
to kill all processes.
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Unload the
modules when the target exits.
2003-02-23 Martin Baulig <>
Renamed `SourceLocation' to `SourceAddress'.
* classes/SourceAddress.cs: Formerly known as SourceLocation.
* classes/SourceLocation.cs: Renamed into SourceAddress.
2003-02-22 Martin Baulig <>
* classes/SourceFileFactory.cs (SourceFile.ReadFile): Use
`Encoding.GetEncoding (28591)' as the default encoding. I've no
idea why, but that's what MCS is doing in driver.cs and it's
fixing my bug.
2003-02-22 Martin Baulig <>
* doc/user-manual.texi: Documented the new breakpoint code.
2003-02-22 Martin Baulig <>
* interfaces/IMethod.cs (IMethodSource.MethodLookup): New method.
* backends/Debugger.cs (InsertBreakpoint): Removed the overloaded
versions which took a method name / file name; the method lookup
is now done by the client, we just take a SourceMethodInfo here.
* frontends/scripting/: Completely reworked the `break' commands.
Thread groups are now specified in `<', '>'.
2003-02-13 Miguel de Icaza <>
* frontends/command-line/Main.cs: Make enter repeat the last command.
2003-02-09 Martin Baulig <>
* test/SymbolFileReader.cs: Moved to ../lib/.
* lib/SymbolFileReader.cs: Added this to the build.
2003-02-08 Martin Baulig <>
* wrapper/main.c: Create a special command thread which is always
stopped. It is used by the debugger to invoke methods on the JIT,
such as compiling a method or inserting a breakpoint.
2003-02-08 Martin Baulig <>
* classes/ModuleData.cs (FindMethod): New abstract method.
* classes/Module.cs (FindMethod): Call ModuleData.FindMethod().
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoModule.FindMethod): Provide a custom implementation for this.
2003-02-07 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Reflect
latest symbol writer changes.
2003-02-05 Martin Baulig <>
* tests/SymbolFileReader.cs: New test. This is a nice tool which
can dump the contents of a symbol file.
2003-02-03 Martin Baulig <>
* backends/server/library.c: Return the correct thread abort/restart
* backends/ThreadManager.cs: Make this work for native
applications again.
2003-02-03 Martin Baulig <>
* frontends/scripting/ScriptingContext.cs: Added `--prompt'
command line argument to specify the prompt; useful when running
the debugger inside the debugger.
2003-02-02 Martin Baulig <>
* test/TestInternCall.cs: New test.
2003-02-02 Martin Baulig <>
* backends/SingleSteppingEngine.cs: Added support for
PInvoke/icall wrappers.
2003-02-02 Martin Baulig <>
* interfaces/IMethod.cs (IsWrapper, WrapperAddress): New properties.
2003-02-02 Martin Baulig <>
* wrapper/icall.c: New file.
(Mono.Debugger.Tests.TestInternCall::Test): New interncall for
testing purposes.
2003-02-02 Martin Baulig <>
* frontends/gui/SourceView.cs (CreateWidget): New abstract method.
(.ctor): Hook to the "map"/"unmap" events and don't update the
widget while we're invisible.
(frame_changed_event): If we're called the first time, queue an
idle callback which scrolls to the current line.
2003-02-02 Martin Baulig <>
* arch/ArchitectureI386.cs (I386Register): Made this public.
2003-02-01 Martin Baulig <>
* frontends/scripting/ScriptingContext.cs (Start): Splitted into
ParseArguments() and Run().
* backends/ProcessStart.cs (IsCoreFile, CoreFile): New properties.
* frontends/gui/DebuggerGUI.cs (ProgramLoadedEvent): This is now
emitted when the DebuggerBackend is created.
(ProcessCreatedEvent): New public event which is emitted when the
main process has been created.
* frontends/gui/DebuggerWidget.cs (SetBackend): New protected
virtual function; this is called before the main process is started.
2003-02-01 Martin Baulig <>
* frontends/gui/DebuggerGUI.cs (ProgramLoadedEvent): New public
* frontends/gui/DebuggerWidget.cs (SetProcess): Made this
protected; we hook to the DebuggerGUI's ProgramLoadedEvent.
2003-02-01 Martin Baulig <>
* frontends/gui/DebuggerWidget.cs: The `backend' is now set in
SetProcess() and must not be used before SetProcess() has been called.
2003-02-01 Martin Baulig <>
* classes/ObjectCache.cs: Re-enable WeakReferences.
2003-02-01 Martin Baulig <>
* frontends/command-line/Interpreter.cs: The ScriptingContext is
now created by the caller and passed to the .ctor as argument.
2003-01-26 Martin Baulig <>
* frontends/scripting/: Use Mono.GetOptions.
2003-01-26 Martin Baulig <>
* doc/user-manual.texi: New file. Explained thread groups and
per-thread breakpoints there.
2003-01-26 Martin Baulig <>
* frontends/scripting/: Implemented ThreadGroup support.
2003-01-26 Martin Baulig <>
* frontends/scripting/Parser.jay: Added `kill' command.
2003-01-24 Martin Baulig <>
* wrapper/: Reflected lastest runtime changes.
2003-01-24 Martin Baulig <>
Made the serialization stuff actually work. You can now save a
debugger session - including all your breakpoints - to disk and
read it back next time you start the debugger :-)
* backend/ProcessStart.cs: Made this serializable.
* backend/DebuggerBackend.cs: Made this serializable.
* class/Module.cs: Make the serialization stuff actually work. We
can now serialize the module list, including all the breakpoints,
to disk and reload it later.
2003-01-24 Martin Baulig <>
* classes/ModuleData.cs: Split out all the dynamic stuff from
`Module'; this is now also the base class for `NativeModule'.
* classes/BreakpointHandle.cs: This was formerly a nested class in
`Module' and is now public.
* classes/SymbolTableManager.cs: Don't use an AsyncQueue here.
* arch/BfdModule.cs: The DwarfReader is now constructed here; we
can also load/unload it.
2003-01-24 Martin Baulig <>
* wrapper/: Prefix all symbols which are accessed from the
debugger with `MONO_DEBUGGER__' and mark them as volatile.
2003-01-23 Nick Drochak <>
* frontends/gui/DebuggerGUI.cs: Hook up close button on window border.
2003-01-22 Martin Baulig <>
* lib/ Use the new wrapper instead of @MONO@. Added
the ${LD_LIBRARY_PATH} to the config files.
* backends/ProcessStart: Pass the LD_LIBRARY_PATH to the target.
2003-01-22 Martin Baulig <>
* classes/Breakpoint.cs (BreakpointHit): Renamed to
CheckBreakpointHit() and added BreakpointHit() which'll be called
after the target is actually stopped and the notifications have
been send.
2003-01-22 Martin Baulig <>
* backends/ThreadManager.cs: Use the new mono thread manager in
the wrapper.
* wrapper/: New directory. This is an unmanaged wrapper
application which embeds the JIT. It is launched from the
debugger when debugging managed applications.
* Set version number to 0.2.1; require Mono 0.19.1.
2003-01-19 Martin Baulig <>
Released version 0.2.0 "Boston" of the Mono Debugger :-)
2003-01-19 Martin Baulig <>
* README.FreBSD: The mono and binutils binaries are ready :-)
2003-01-19 Martin Baulig <>
* README.FreeBSD: Unfortunately, the binutils issue is a bit worse
than expected on FreeBSD. I've made a FreeBSD port, including a
binary package; added a link to them.
2003-01-19 Martin Baulig <>
* arch/DwarfReader.cs: Don't make this an IDisposable.
* classes/SymbolTableManager.cs: Catch the ThreadAbortException
and set the events to wake up a potentially waiting caller.
2003-01-18 Martin Baulig <>
* interfaces/IProcess.cs (State, Disassembler): New properties.
* backends/SingleSteppingEngine.cs: Implement IDisassembler.
* backends/Process.cs: Some API cleanups.
(ProcessExitedEvent): New public event.
2003-01-18 Martin Baulig <>
* Set version number to 0.1.9, we're almost ready for
the release ....
2003-01-18 Martin Baulig <>
* RELEASE-NOTES-0.2.0.txt: Replaced `GNU/Linux' with `Linux and
BSD kernels' since the debugger is now working on FreeBSD.
2003-01-17 Martin Baulig <>
* backends/DaemonThreadRunner.cs: Make the runner thread exit when
the target receives a SIGKILL.
2003-01-17 Martin Baulig <>
* classes/ObjectCache.cs: Catch and silently ignore exceptions
when creating the WeakReference. This makes the debugger work
with a runtime which has no GCHandle support.
2003-01-17 Martin Baulig <>
* Don't check for gthread anymore.
* backends/server/breakpoints.c: Don't use a GStaticRecMutex here;
mono_debugger_breakpoint_manager_new () now takes two delegate
arguments - a lock an an unlock function.
* classes/BreakpointManager.cs: Create a Mutex and pass the
unmanaged breakpoint manager to delegates to lock/unlock it.
2003-01-16 Martin Baulig <>
* backends/server/i386-freebsd-ptrace.c (do_wait): FreeBSD
requires the `WLINUXCLONE' option if and only if the target is a
* backends/server/i386-ptrace.c (InferiorHandle): Added
`is_thread' field; this is set to 1 by server_ptrace_attach()
since we currently only attach to threads.
2003-01-16 Martin Baulig <>
* Check whether we have a shared; if not,
tell people to read the "binutils and libbfd issues" section in
* README.FreeBSD: New file.
* doc/FAQ.txt: Also added this to the FAQ.
2003-01-16 Martin Baulig <>
* backends/ThreadManager.cs: Don't hardcode signal numbers.
* backends/ptrace/PTrace.cs
(ThreadAbortSignal, ThreadRestartSignal, ThreadDebugSignal,
MonoThreadDebugSignal): New static properties.
2003-01-16 Martin Baulig <>
* backends/ThreadManager.cs: Use the new thread manager in
mono/io-layer when debugging managed applications.
2003-01-15 Peter Williams <>
* frontends/scripting/Parser.jay: Change it so that expressions
go in parentheses, not variable_expressions.
* frontends/scripting/Command.cs: supporting changes of
VariableExpressionGroup -> ExpressionGroup.
2003-01-13 Peter Williams <>
* frontends/scripting/Command.cs: Implement a binary operator for
simple math in expressions. Make variable_expressions convertible
to expressions so that we don't need PrintCommand as well as
PrintVariableCommand. Change the default resolution of variables
to try and get their actual values. Make array index take an
expression so that we can do "$array[$i]".
* frontends/scripting/Parser.jay: Define binary operators and make
them possible expressions. Don't make processes possible expressions.
Remove the PrintVariable command since we don't need it anymore.
* frontends/scripting/Tokenizer.cs: Return the binary operator tokens
if necessary. Needs fixing to support negative numbers.
2003-01-14 Martin Baulig <>
* NEWS: The Debugger is now working on FreeBSD 4.7 :-)
2003-01-14 Martin Baulig <>
* backends/IInferior.cs (StopSignal): Removed.
* backends/ptrace/PTrace.cs (SIGSTOP, SIGINT, SIGCHLD, SIGPROF):
New static properties; initialize them in a static .ctor.
* backend/ThreadManager.cs (SignalHandler): Ignore SIGPROF as well.
2003-01-14 Martin Baulig <>
* arch/ArchitectureI386.cs: Keep the registers in sync with
DebuggerI386Registers in backends/server/i386-arch.h.
2003-01-14 Martin Baulig <>
* backends/server/i386-linux-ptrace.c: Moved the
architecture-specific stuff into i386-arch.[ch]; moved the
portable stuff into i386-ptrace.c, created i386-linux-ptrace.c and
2003-01-14 Martin Baulig <>
* (server_sources): AC_SUBST this to
i386-linux-ptrace.c on Linux and to nothing on other systems.
* backends/server/library.c: If we're on Linux, #include
"i386-linux-ptrace.c", otherwise don't read a backend at all.
2003-01-14 Martin Baulig <>
* arch/CoreFileElfI386.cs (get_registers): Read the registers from
the `.reg' section to make this more portable.
* arch/bfdglue.c (bfd_glue_core_file_elfi386_get_registers): Make
this work on FreeBSD 4.7.
2003-01-13 Martin Baulig <>
* glue/mono-debugger-readline.c: Don't use a GIOChannel here, just
read from stdin.
* classes/GnuReadline.cs: We don't need an IOChannel anymore.
2003-01-13 Martin Baulig <>
* (--disable-readline): New command line argument to
disable the use of GNU readline.
* glue/mono-debugger-readline.c: Don't use readline if we don't
have it. Only set the GIOChannel flags on startup.
2003-01-13 Martin Baulig <>
* glue/bfdglue.c (bfd_glue_core_file_elfi386_get_registers):
Changed the type of the `regs' argument to `gpointer *' to make it
* glue/bfdglue.h: Don't #include Linux-specific header files.
* Check whether we're actually on Linux.
(--disable-gui): New command argument to disable building the gui.
2003-01-13 Martin Baulig <>
* classes/StackFrame.cs (Name): New public property. Returns the
method name from ISymbolLookup.SimpleLookup().
* frontends/gui/BacktraceView.cs: Use the new StackFrame.Name
property to get the method name.
2003-01-13 Martin Baulig <>
* interfaces/ISymbolTable.cs (ISymbolLookup.SimpleLookup): New
interface method which returns just the name of the method without
constructing the method itself.
* arch/Bfd.cs: Read the bfd symbol table and make it available via
the ISymbolLookup's SimpleLookup() method.
2003-01-13 Martin Baulig <>
* interfaces/IDisassembler.cs (DisassembleInstruction): Removed
the version which took a `ref TargetAddress'; the other one now
returns an AssemblerLine or null on error, it doesn't throw an
exception any longer.
* classes/AssemblerMethod.cs (AssemblerLine): Made this a sealed
class, not a struct so we can pass this by reference and return null.
2003-01-13 Martin Baulig <>
* classes/AssemblerMethod.cs (AssemblerMethod.AppendOneLine): New
public method to append a line at the end of the current method.
* frontends/gui/DisassemblerView.cs: While we don't have a method,
add all instructions we encounter here.
2003-01-12 Martin Baulig <>
* classes/NativeMethod.cs: Renamed to AssemblerMethod.
* classes/AssemblerMethod.cs: New public class. This derives from
MethodSource, but we don't need an IMethod any longer. The API is
also a bit improved, you can for instance get an array of
AssemberLines to access individual lines.
* interfaces/IDisassembler.cs: Return an AssemblerMethod, not an
* frontends/gui/DisassemblerView.cs: If we don't have a method,
just display the current instruction.
2003-01-12 Martin Baulig <>
* widgets/sources/debuggerwidgets/: New directory.
* widgets/sources/debuggerwidgets/debuggerentry.[ch]: New widget.
This is derived from GtkEntry and has "previos_line" and
"next_line" signals which are emitted when the user presses the
Up/Down keys.
* frontends/gui/CurrentInstructionEntry.cs: Use the new
DebuggerEntry widget; if the user presses the Up/Down keys,
display the next/previous instruction.
2003-01-12 Martin Baulig <>
* frontends/gui/DebuggerGUI.cs: Make the "Program to Debug" menu
item work again.
* frontends/gui/ Removed the "File / Open" and
"Debug / Restart" menu items.
2003-01-12 Martin Baulig <>
* frontends/gui/DebuggerWidget.cs: Removed all the method stuff;
we only need it in the SourceManager.
* frontends/gui/RegisterDisplay.cs (Active): New public property.
This is set to true while the CPU view is being displayed.
2003-01-11 Martin Baulig <>
* classes/StackFrame.cs
(DisassembleInstruction, DisassembleMethod): New public methods.
* frontends/gui/DisassemblerView.cs: Use StackFrame.DisassembleMethod().
2003-01-11 Martin Baulig <>
* frontends/gui/SourceView.cs: Don't derive from DebuggerWidget;
moved most of the functionality from SourceList here.
* frontends/gui/SourceList.cs: Derive from SourceView.
* frontends/gui/DisassemblerView.cs: Derive from SourceView.
* frontends/gui/SourceManager.cs: Nicely integrate the DisassemblerView.
2003-01-11 Martin Baulig <>
* frontends/gui/SourceList.cs: Moved the SourceList class from
SourceManager.cs into its own file.
2003-01-11 Martin Baulig <>
* widgets/generator/gtk-api.xml: Removed
gtk_source_buffer_get_tag_start() and gtk_source_buffer_get_tag_end().
2003-01-11 Martin Baulig <>
* frontends/scripting/Parser.jay: Added `MODULE ALL module_operations'
to do the operation on all modules.
2003-01-11 Martin Baulig <>
* frontends/scripting/Parser.jay: Added `SHOW MODULES' command and
a `MODULE' command to modify modules.
2003-01-11 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Incremented
MonoSymbolFileTable.DynamicVersion to 20 for the next Mono release.
2003-01-10 Peter Williams <>
* lib/ (clean): Remove *.dll on make clean as well as *.exe.
Also add a rule to regenerate Makefile if changes.
2003-01-08 Peter Williams <>
* frontends/scripting/ Make the jay rule not clobber Parser.cs
if jay fails, and add a rule to regenerate Makefile if needed.
* backends/ProcessStart.cs: If no directory argument is given, assume
we're looking in the current directory.
2003-01-06 Martin Baulig <>
* Set version number to 0.1.7 (this is an odd number
which means that we're still unstable ...)
2003-01-06 Martin Baulig <>
* doc/debugger-status.txt: Added a "How you can help with the
debugger" section.
2003-01-06 Martin Baulig <>
* doc/debugger-status.txt: Added a few notes about the current
status here.
2003-01-06 Martin Baulig <>
* doc/debugger-status.txt: Updated this document.
* doc/roadmap.txt: This one was too much outdated. Removed.
* RELEASE-NOTES-0.2.0.txt: Started to document all the cool new
features here.
2003-01-06 Martin Baulig <>
* tests/TestManagedTypes.cmd: Added a few more test cases here.
2003-01-06 Martin Baulig <>
* frontends/scripting/: It's called `accessible', not `accessable'.
2003-01-05 Martin Baulig <>
* NEWS: Added a new item :-)
* RELEASE-NOTES-0.1.0.txt: Added a comment about this release
which never really happened.
2003-01-05 Martin Baulig <>
* test/ Added `test' target to run all the tests.
2003-01-05 Martin Baulig <>
* test/D.cs: Renamed to TestManagedTypes.cs.
2003-01-05 Martin Baulig <>
* lib/ Moved here from ../test.
* lib/ Moved here from ../test.
* lib/: New directory. Build everything here instead of in the
test/ directory.
* test/: This directory will now contain only tests.
2003-01-05 Martin Baulig <>
* backends/IInferior.cs (Run): Added `bool redirect_fds' argument;
if false, we don't redirect stdout and stderr. This is used in
the command line interpreter.
2003-01-04 Peter Williams <>
* (READLINE_DEPLIBS): Check to see if libreadline
needs -ltermcap and if so define it here.
* glue/ (libmonodebuggerreadline_la_LIBADD): Use
2003-01-05 Martin Baulig <>
* backends/ProcessStart.cs: The way how the debugger starts the
JIT has changed; make sure to update your JIT as well.
2003-01-04 Martin Baulig <>
* frontends/scripting/ScriptingContext.cs: Support non-interactive
debugging sessions; when reading commands from a file, we don't
print the current frame when we stop and all errors are always fatal.
2003-01-04 Martin Baulig <>
* frontends/scripting/Parser.jay: Added a couple of `assert'
commands to be used in a test suite.
2003-01-04 Martin Baulig <>
* interfaces/ITargetObject.cs (Kind): Moved to ITargetType.
* interfaces/ITargetType.cs (Kind): Moved this property here.
2003-01-04 Martin Baulig <>
* frontends/scripting/Parser.jay: Added "length ($a)",
"upper ($a)" and "lower ($a)" where $a is an array.
2003-01-04 Martin Baulig <>
* frontends/scripting/Parser.jay: Added the parent expression
"print parent ($foo)".
2003-01-04 Martin Baulig <>
* frontends/scripting/Parser.jay: Added the array access
expression "print $a [5]".
2003-01-04 Martin Baulig <>
* frontends/scripting/Parser.jay (variable_expression): Move the
`STAR variable_expression' rule above the struct element one.
Added grouping expression "print (*$c.Object).Foo".
2003-01-04 Martin Baulig <>
* frontends/scripting/Command.cs (VariableExpression): Added
`ResolveType' which returns an ITargetType (without accessing the
ITargetObject if possible).
* frontends/scripting/Parser.jay: The `show type' command now
accepts an arbitrary `variable_expression'.
2003-01-04 Martin Baulig <>
* interfaces/ITargetFundamentalObject.cs: New interface.
* interfaces/ITargetFundamentalType.cs: New interface.
* interfaces/TargetObjectKind.cs: New enum.
* interfaces/ITargetObject.cs (Kind): New property.
(HasObject, Object): Removed.
* interfaces/ITargetType.cs (HasObject): Removed.
* backends/mono-csharp/MonoFundamentalObjectBase.cs: New abstract
base class for ITargetFundamentalObject.
2003-01-04 Martin Baulig <>
* frontends/scripting/Command.cs (VariableExpression): Added
`ResolveVariable' method which returns an ITargetObject.
* interfaces/ITargetPointerObject.cs
(HasDereferencedObject, DereferencedObject): New properties.
2003-01-04 Martin Baulig <>
* frontends/scripting/Parser.jay: Added the dereferencing
expression "print *$a" where $a is a pointer or a Mono `object'.
2003-01-04 Martin Baulig <>
* frontends/scripting/Command.cs: Renamed the old
VariableExpression to VariableReferenceExpression.
(VariableExpression): New abstract class.
* frontends/scripting/Parser.jay (variable_expression): This is
now always a VariableExpression. Added scripting variables; you
can now say "set !foo = $b.Test" and then later reference it with
"print !foo".
2003-01-04 Martin Baulig <>
* backends/IInferior.cs (Bfd): New public property.
* backends/Debugger.cs: Create a MonoCSharpLanguageBackend for
core files from managed applications; use a special construction
for it, it'll only read the symbol tables once on construction.
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Provide a
second .ctor which takes a CoreFile argument and immediately reads
the symbol tables.
2003-01-04 Martin Baulig <>
* Link against -liberty as well as -lbfd.
* classes/IOChannel.cs: Put this into the namespace Mono.Debugger.
* classes/Utils.cs: Duplicate the contents of GLib.FileUtils here;
this was the only method which we were using from glib-sharp in
the backend, so this dependency is now gone.
* test/ Don't link against glib-sharp.dll in the backend.
2003-01-04 Martin Baulig <>
* classes/Backtrace.cs: Don't make this abstract; move the stack
unwind stuff from the SingleSteppingEngine here.
2003-01-03 Martin Baulig <>
* interfaces/IProcess.cs: Don't implement ITargetNotification.
(IProcess.GetMemoryMaps): New method.
* backends/SingleSteppingEngine.cs: Implement ITargetAccess and
* backends/TargetMemoryArea.cs: Moved to ../classes.
* classes/TargetMemoryArea.cs: Moved here from ../backends; the
.ctor is now public.
2003-01-03 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Breakpoints
in not-yet-JITed methods are finally working again :-)
2003-01-02 Martin Baulig <>
* frontends/command-line/Main.cs: If the user gave any command
line arguments, immediately start the program.
* frontends/scripting/Parser.jay: The `start' command no longer
has any default arguments, so it doesn't accept an empty list anymore.
2003-01-02 Martin Baulig <>
* backends/Process.cs (Process.Inferior): Removed this property.
The IInferior is now a private interface and is not exposed to the
2003-01-02 Martin Baulig <>
* interfaces/ILanguageBackend.cs: Moved to ../backends.
* backends/ILanguageBackend.cs: This is now an internal interface.
(BreakpointHit, GetTrampoline): Take an IInferior, not an
IProcess argument.
* classes/Module.cs (Module.Language): The return type of this
property is now `object'.
* arch/BfdContainer.cs: Don't implement ILanguageBackend.
2003-01-02 Martin Baulig <>
* arch/CoreFile.cs: Don't implement IInferior, just IProcess and
2003-01-02 Martin Baulig <>
* classes/AddressDomain.cs: New global class.
* classes/TargetAddress.cs: Use an instance of the new
AddressDomain class as the domain instead of just an `object'.
The AddressDomain has a name and an unique ID which is now used in
all error messages - this helps you a lot if you're evey wondering
why a comparision fails with an ArgumentException.
2003-01-01 Martin Baulig <>
* interfaces/ITargetMemoryAccess.cs (ITargetMemoryInfo): New
interface; derives from ITargetInfo; added `AddressDomain' and
'GlobalAddressDomain' properties.
(ITargetMemoryAccess): Derive from ITargetMemoryInfo.
* arch/*.cs: Don't use the IInferior here.
2003-01-01 Martin Baulig <>
* interfaces/ITargetMemoryAccess.cs (ITargetAccess): New
interface; derives from ITargetMemoryAccess has has a function to
read a register.
* arch/ArchitectureI386.cs: The ctor now takes an ITargetAccess
and the global address domain; we don't use the IInferior here any
2003-01-01 Martin Baulig <>
* frontends/scripting/Parser.cs: Added `disassemble' and
`disassemble method' commands.
2003-01-01 Martin Baulig <>
Happy New Year 2003 :-)
* classes/Backtrace.cs: New public class; we're now using an
instance of this class instead of a `StackFrame[]' for a backtrace.
* classes/StackFrame.cs (Register): New public struct.
(StackFrame.Registers): New abstract property.
* backends/process.cs (Process.GetBacktrace): Return a Backtrace,
not a StackFrame[].
* arch/ArchitectureI386.cs (UnwindStack): New function to unwind
the stack to get the registers of another stack frame.
2002-12-31 Martin Baulig <>
This is the end of the Year 2002.
* frontends/scripting/Parser.jay: Implemented the `$a.Test'
expression to access a struct/class field.
2002-12-31 Martin Baulig <>
* classes/StackFrame.cs: Made this class abstract.
(Handle): Removed this property.
(LocalsAddress, ParamsAddress): New abstract properties.
(TargetMemoryAccess): New abstract property.
* classes/SingleSteppingEngine.cs: Explicitly implement
ITargetMemoryAccess; we're sending a sync_command for each
operation. This is used to read the target's memory.
2002-12-31 Martin Baulig <>
* frontends/scripting/Parser.jay: Added `print $name'.
2002-12-31 Martin Baulig <>
* frontends/scripting/Tokenizer.cs: Only recognize the short
keywords at the start of the line; `$' starts an identifier, so
don't recognize any keywords in it.
* frontends/scripting/Parser.jay: Added `show type $name' to show
the type of a variable/parameter.
2002-12-31 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: The big type
table rewrite; the JIT now allocates types in continuous memory
areas rather than using an individually malloc()ed block for each
2002-12-30 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: The big
rewrite; we're doing all the symbol table stuff in a background
thread when we get a notification from the JIT.
* backends/ThreadManager.cs: If we're debugging a managed
application, the JIT creates a special debugger thread for us;
create a DaemonThreadRunner for this thread.
2002-12-30 Martin Baulig <>
* arch/Bfd.cs: Use the ThreadManager as the TargetAddress domain
for all symbol table addresses; they must be shared between all
the threads.
* interfaces/ILanguageBackend.cs (GetTrampoline, BreakpointHit):
Added IProcess argument.
* interfaces/ITargetMemoryAccess.cs
(ITargetMemoryReader): Added `ReadGlobalAddress'; uses the
ThreadManager as the TargetAddress'es domain.
(ITargetMemoryAccess): Likewise.
2002-12-30 Martin Baulig <>
* backends/DaemonThreadRunner.cs: New public class.
* backends/ThreadManager.cs: Use the DaemonThreadRunner for the
pthread library's manager thread.
* interfaces/ITargetNotification.cs (TargetState): Added `DAEMON'
for undebuggable daemon threads.
2002-12-30 Martin Baulig <>
* backends/Debugger.cs: Only create the `csharp_language' if we're
actually debugging a managed application.
* backends/server/i386-linux-ptrace.c (server_ptrace_kill): Use
`kill (handle->pid, SIGKILL)', not `ptrace (PTRACE_KILL)' since
kill() works from any thread.
(server_ptrace_finalize): Detach from the target after killing it.
2002-12-29 Peter Williams <>
* frontends/gui/DebuggerGUI.cs (Main): Any argument after a
nonoption argument is not for us, so just add it to args.
(LoadProgram): Pass in our environment variables to the
child process.
2002-12-28 Martin Baulig <>
* frontends/scripting/Parser.jay: Transformed all the old
Expressions into Commands.
2002-12-27 Martin Baulig <>
* backends/server/breakpoints.h (BreakpointManager): Use a
GStaticRecMutex instead of a GMutex so we can call
mono_debugger_breakpoint_manager_lock/unlock recursively from the
same thread.
* backends/server/i386-linux-ptrace.c (server_ptrace_read_data):
Remove breakpoints from the returned memory area.
2002-12-26 Martin Baulig <>
* frontends/scripting/Parser.jay: The `break' command now takes
an opt_process argument.
2002-12-26 Martin Baulig <>
* backends/SingleSteppingEngine.cs: Correctly step over
breakpoints in the current thread.
* backends/IInferior.cs
(EnableAllBreakpoints, DisableAllBreakpoints): Removed.
2002-12-26 Martin Baulig <>
* inferfaces/IProcess.cs: New interface. This is implemented by
backends/Process.cs; it's some kind of a hack because Process.cs
is in the backends dir, but I need this in Module.cs.
* classes/ThreadGroup.cs: New public class. It is used to share
information about breakpoints and signal handlers between
different invocations of the same target.
* classes/Module.cs (AddBreakpoint): Added ThreadGroup argument.
(EnableBreakpoint, DisableBreakpoint): Likewise.
* backends/classes/NativeModule.cs
(EnableBreakpoint, DisableBreakpoint): Enable/disable the
breakpoint on all threads in the ThreadGroup.
* backends/SingleSteppingEngine.cs
(InsertBreakpoint, RemoveBreakpoint): Make this work again.
* frontends/scripting/Parser.jay: Added `break' command to insert
a breakpoint.
2002-12-25 Martin Baulig <>
* arch/Bfd.cs (Bfd.GetDisassembler): Take an IInferior argument
and actually pass that argument to the BfdDisassembler's ctor; we
cannot share a disassembler between multiple IInferior's.
2002-12-25 Martin Baulig <>
* backends/SingleSteppingEngine.cs: If we're stepping one instruction
and receive signal which we're supposed to ignore, the stepping operation
has already been completed and we don't need to resume the target.
2002-12-25 Martin Baulig <>
* frontends/gui/ProcessManager.cs: Added thread manager GUI.
2002-12-25 Martin Baulig <>
* classes/DebuggerTextWriter.cs: New abstract base class.
* frontends/scripting/ScriptingContext.cs: Use two
DebuggerTextWriter's for the debugger and inferior output.
* frontends/gui/OutputWindow.cs: Rewrote this to use the new
DebuggerTextWriter. We're now using a separate output window
for the inferior output and error output is displayed in red.
2002-12-25 Martin Baulig <>
* frontends/gui/DebuggerWidget.cs: Renamed SetBackend -> SetProcess;
the DebuggerBackend can already be set in the ctor, so this only
takes a Process argument.
2002-12-25 Martin Baulig <>
* classes/NativeMethod.cs: Create the ISourceBuffer in the ctor.
* frontends/gui/SourceView.cs: Make this work again.
2002-12-24 Martin Baulig <>
This is my last commit for today, so merry x-mas !
2002-12-24 Martin Baulig <>
The Monday Night Hack of week #52 - the BreakpointManager is done.
* backends/BreakpointManager.cs: New file. This is just a wrapper
around the unmanaged API in backends/server/breakpoints.[ch].
* backends/server/breakpoints.[ch]: New files.
* backends/server/i386-linux-ptrace.c: Use a breakpoint manager
which is shared between all threads of the same application.
* backends/ThreadManager.cs
(AcquireGlobalThreadLock, ReleaseGlobalThreadLock): Don't
lock/unlock the calling process.
* backends/SingleSteppingEngine.cs: Breakpoints are almost working
again; we can now safely hit a breakpoint in another thread
(except of a few race conditions which aren't fixed yet).
2002-12-23 Martin Baulig <>
* frontends/gui/SourceManager.cs (SourceManager): Added events
`MethodInvalidEvent', `MethodChangedEvent', `FrameChangedEvent'
and `FramesInvalidEvent'.
(SourceList): Connect these events on the SourceManager, not on
the Process since their handlers must be called from the gtk# thread.
* frontends/gui/DebuggerWidget.cs
(RealMethodChanged, RealMethodInvalid): New protected virtual
methods which may be called from any thread.
(MethodChanged, MethodInvalid): New protected virtual methods
which are guaranteed to be called from the gtk# thread.
2002-12-23 Martin Baulig <>
* frontends/gui/DebuggerWidget.cs
(RealFrameChanged, RealFramesInvalid, RealStateChanged): New
protected virtual methods which may be called from any thread.
(FrameChanged, FramesInvalid, StateChanged): New protected virtual
methods which are guaranteed to be called from the gtk# thread.
2002-12-23 Martin Baulig <>
* class/ThreadNotify.cs: This can now have multiple listeners
(since file descriptors are a precious resource).
2002-12-23 Martin Baulig <>
* frontends/gui/DebuggerWidget.cs: Added `DebuggerGUI' argument;
get the Glade.XML from an internal property of the gui.
* frontends/gui/SourceManager.cs: Derive from DebuggerWidget.
2002-12-15 Martin Baulig <>
* frontends/gui/RegisterDisplay.cs: Make this working again.
* frontends/gui/CurrentInstructionEntry.cs: Likewise.
2002-12-15 Martin Baulig <>
* frondends/command-line/Interpreter.cs: Use the new command line
interface here.
2002-12-15 Martin Baulig <>
* backends/ThreadManager.cs: Added a global thread lock mechanism.
2002-12-14 Martin Baulig <>
* backends/SingleSteppingEngine.cs: All step commands now take an
additional `bool synchronous' argument and return true on success;
if the `synchronous' argument is set, the engine waits until the
operation has been completed before returning.
2002-12-14 Martin Baulig <>
* backends/ThreadManager.cs: New file.
2002-12-13 Martin Baulig <>
* backends/server/i386-linux-ptrace.c: Added hardware breakpoints.
* backends/SingleSteppingEngine.cs: Use a hardware breakpoint for
the temporary breakpoints; this'll avoid some bigger headaches
with threads.
2002-12-13 Martin Baulig <>
WARNING: The Debugger is currently more or less broken since I
haven't finished all this stuff yet.
Rewrote and redesigned the SingleSteppingEngine to do all the
stepping in a background thread.
* backends/server/*, backends/ptrace/PTrace.cs: Simplified this
ugly async stuff; since we're now running in our own thread, we
can just wait for our child.
2002-12-13 Martin Baulig <>
* frontends/scripting/Parser.cs: Added `finish' command.
* frontends/command-line/Interpreter.cs: Commented out almost
everything in this file; it'll go away really soon.
* classes/ThreadNotify.cs: New class; this is basically the same
than Gtk.ThreadNotify, but we can't link against gtk in the
* classes/IOChannel.cs (IODataInputChannel, IODataOutputChannel):
Added these classes for data channels.
* backends/Process.cs, backends/Debugger.cs: Moved all
process-specific stuff to the new `Process' class.
* frontends/gui/DebuggerWidget.cs (DebuggerWidget.SetBackend):
Added `Process process' argument; use the Process everywhere
instead of the DebuggerBackend.
2002-12-11 Martin Baulig <>
* backends/server/i386-linux-ptrace.c: Get the registers each time
the target stops and store them.
2002-12-11 Martin Baulig <>
* backends/ProcessStart.cs: New class. Moved the argv and envp
stuff here; this class specifies how to launch an application.
2002-12-10 Martin Baulig <>
* backends/Debugger.cs (DebuggerBackend.Run): This method
now returns a new Process.
(DebuggerBackend.ReadCoreFile): Likewise.
* backends/Process.cs: Moved a few more things from Debugger.cs.
2002-12-10 Martin Baulig <>
Started to split DebuggerBackend into DebuggerBackend and Process.
Later one, a DebuggerBackend will have a Process for each thread
of the application being debugged.
* backends/Process.cs: New public class.
2002-12-10 Martin Baulig <>
* frontends/scripting/ScriptingContext.cs: Renamed `Process' to
`ProcessHandle' since I'm about to create backends/Process.cs.
2002-12-08 Martin Baulig <>
* class/ObjectCache.cs: Use one global cleanup thread rather than
one thread per object.
2002-12-08 Radek Doulik <>
* glue/mono-debugger-readline.h: include stdio.h - fixes
compilation on rh8, where readline .h file doesn't include it and
FILE is then there undefined
2002-12-01 Martin Baulig <>
* frontends/scripting/: Added new scripting interface.
2002-11-30 Martin Baulig <>
* glue/mono-debugger-readline.[ch]: New files.
* classes/GnuReadLine.cs: Added interface to GNU Readline.
2002-11-28 Martin Baulig <>
* frontends/command-line/Main.cs: Added new stand-alone command
line interpreter.
* frontends/command-line/Interpreter.cs: Improved this a bit.
2002-10-18 Martin Baulig <>
* RELEASE-NOTES-0.1.0.txt: Added preliminary release notes.
2002-10-17 Martin Baulig <>
* backends/SingleSteppingEngine.cs: Don't change the state to
running unless the stepping operation actually succeeded. Don't
allow any stepping operations while sending out the event.
2002-10-17 Martin Baulig <>
* interfaces/ITargetLocation.cs, class/TargetLocation.cs: Removed.
* backends/class/RelativeTargetLocation.cs: Removed.
* backends/class/TargetStackLocation.cs: Removed.
* interfaces/ITargetObject.cs (ITargetObject.Location): Removed
this property, not all variables have an address.
* backends/mono-csharp/MonoTargetLocation.cs: New class.
* backends/mono-csharp/MonoStackLocation.cs: New class.
* backends/mono-csharp/MonoRegisterLocation.cs: New class.
* backends/mono-csharp/MonoRelativeTargetLocation.cs: New class.
* backends/mono-csharp/: Use the new MonoTargetLocation code.
* classes/StackFrame.cs (StackFrame.Level): New property.
2002-10-17 Martin Baulig <>
* interface/ILanguage.cs: Removed.
2002-10-15 Miguel de Icaza <>
* frontends/gui/DebuggerGUI.cs: Check state of the backend before
issuing a command, as even if we grey menu items, events can be
Reactivate the sensitivity code.
Desensitize `Program to Debug' when running.
* frontends/gui/ProgramToDebug.cs: Display the current settings,
and allow the user to change those, instead of re-entering them.
2002-10-14 Martin Baulig <>
* We don't need to check for gdb anymore.
* test/ The configuration file is now
finally called `Debugger.exe.config'.
2002-10-13 Martin Baulig <>
* class/SourceInfo.cs: Only read the methods when they're needed.
2002-10-12 Martin Baulig <>
Implemented a SymbolTableManager which maintains all the symbol
tables and which uses a separate thread to update things in the
Since reading the source list is a very CPU consuming operation
and the source list is only needed when inserting a new breakpoint,
it is now also read in the background thread.
* class/SymbolTableManager.cs: This class now maintains all the
symbol tables. It's using a separate thread to update things in
the background.
* class/AsyncQueue.cs: New class.
* class/SymbolTableCollection.cs: Added Lock() and UnLock()
methods to avoid updates while adding several symbol tables.
* arch/DwarfReader.cs: This class is now thread-safe.
* interfaces/ILanguageBackend.cs (ILanguageBackend.SymbolTable):
Removed, the SymbolTableManager now holds all the symbol tables.
* backends/Debugger.cs: Use the SymbolTableManager.
2002-10-12 Martin Baulig <>
* class/Module.cs: Added property to get the ISymbolTable.
* backends/Debugger.cs: Do all the symbol table handling here
based on the module list. Modifying the Module.StepInto property
of shared libraries will now actually work.
* backends/BfdModule.cs: Only report the symbols being loaded if
we have a DwarfReader.
2002-10-11 Martin Baulig <>
* backends/server/i386-linux-ptrace.c: If the target received a
signal, remember it and pass it to the target the next time it is
resumed. Also added a function to modify/clear the signal.
* backends/Debugger.cs (DebuggerBackend.ClearSignal): New method
to clear the signal.
2002-10-11 Martin Baulig <>
* arch/CoreFile.cs (CoreFile.GetMemoryMaps): New method to get a
TargetMemoryArea[] for the core file's sections.
* frontends/gui/MemoryMapsDisplay.cs: Added memory map display.
2002-10-11 Martin Baulig <>
* backends/TargetMemoryArea.cs: New struct.
* backends/IInferior.cs (IInferior.GetMemoryMaps): New method to
get the memory maps as an array of TargetMemoryArea's.
* frontends/gui/HexEditor.cs: Use the memory maps to ensure that
we're only accessing mapped memory, allow editing of the memory.
You need a new Gtk# for this.
2002-10-11 Martin Baulig <>
* frontends/gui/HexEditor.cs: Added hex editor.
2002-10-11 Martin Baulig <>
* frontends/gui/ModuleDisplay.cs: Added module display.
2002-10-10 Martin Baulig <>
Improved core file support.
* backends/IInferior.cs (IInferior.UpdateModules): New method to
reload the modules.
* backends/Debugger.cs (Backend.CurrentFrame, Backend.CurrentMethod,
Backend.GetBacktrace): Don't use the SingleSteppingEngine if this
is a core file.
* arch/Bfd.cs: Improved support for core files and shared libraries.
2002-10-09 Miguel de Icaza <>
* frontends/gui/VariableDisplay.cs: Add a few GUI touchups to the
variable display.
2002-10-08 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoCSharpLanguageBackend): Don't derive from SymbolTable but use
a separate symbol table. This allows us to release the symbol
table completely when the target exits.
* backends/Debugger.cs (InferiorStateNotify): Removed this event,
use the StateChanged event instead.
2002-10-05 Martin Baulig <>
* frontends/gui/: Display the SourceStatusbar while the source
code is visible and the TargetStatusbar while the CPU view is
2002-10-05 Martin Baulig <>
* frontends/gui/SourceView.cs: Made this class abstract.
* frontends/gui/SourceManager.cs: Use Gtk.SourceView.
2002-10-03 Miguel de Icaza <>
* frontends/gui/DebuggerGUI.cs: Hook up the signal and show an
error message.
2002-10-02 Miguel de Icaza <>
* frontends/gui/SourceManager.cs: Add code to switch to a newly
loaded file by default.
* frontends/gui/RegisterDisplay.cs: Allow values to be changed,
rewrite code to minimize duplicated code.
Turn off advanced mode, so segment registers are not shown
* backends/IInferior.cs: New property to tell if we can update the
registers or not.
* frontends/gui/Report.cs: New file, requires an updated Gtk#
* arch/ArchitectureI386.cs: Add TOP constant.
2002-10-02 Martin Baulig <>
* interfaces/ITargetNotification.cs
(ITargetNotification.DebuggerOutput): New event to emit diagnostic
messages and errors.
(ITargetNotification.DebuggerError): New event to emit non-fatal
* backends/Debugger.cs: Improved error handling a bit, we emit a
`DebuggerError' event if we could not load the symbol table
instead of throwing an exception.
2002-10-02 Martin Baulig <>
* backends/IInferior.cs (IInferior.SetRegister, SetRegisters):
New methods to set registers.
* backends/Debugger.cs (DebuggerBackend.SetRegister, SetRegisters):
New methods to set registers.
2002-10-02 Martin Baulig <>
* interfaces/ITargetStructType.cs (ITargetStructType.Methods):
New property to get the methods.
(ITargetMethodInfo): New interface to represent a method.
* interfaces/ITargetStructObject.cs (ITargetStructObject.PrintObject):
New method to call a method in the target to print the object.
2002-10-01 Miguel de Icaza <>
* frontends/command-line/Interpreter.cs: Update online help.
* frontends/gui/RegisterDisplay.cs: Love touch ups, it now works
as intended.
* backends/Debugger.cs: Add a new event to notify when the
inferior is set/reset.
* frontends/gui/RegisterDisplay.cs: Use a custom view for the x386
view of the register, so we can modify the flags at some point,
and also to encourage the creation of target-specific register
views that make sense for that particular target.
* frontends/gui/Utils.cs: Bug fix.
2002-10-01 Martin Baulig <>
* backends/mono-csharp/: Make "boxing" of non-valuetypes actually
work. Added exception support to the properties.
2002-10-01 Martin Baulig <>
Reworked the module stuff, implemented breakpoints and start to
add support for properties.
* interfaces/IModule.cs: Removed, has been replaced with class/Module.cs.
* class/Module.cs: New public class, replaces IModule. This class
maintains all the breakpoints.
* interfaces/ISymbolTable.cs (ISymbol): Removed this interface.
* class/SingleSteppingEngine.cs: Moved the single-stepping engine
into its own class. This is now also doing all the method lookups.
2002-09-27 Martin Baulig <>
* arch/BfdContainer.cs: New class to hold all Bfd instances of the
DebuggerBackend. It also maintains the module table and allows it
to be shared across different invocations of the target.
* interfaces/ISymbolTable.cs: Started to work on lookup-by-name.
(ISymbol): New interface.
(ISymbolLookup): Added `ISymbol Lookup (string name)'.
(ISymbolTable): Added HasSymbols and Symbols properties.
2002-09-27 Martin Baulig <>
* interfaces/IModule.cs (IModule.StepInto): New property to
specify whether to enter methods in this module while
* interfaces/IMethod.cs (IMethod.Language): Removed.
(IMethod.Module): Added.
* backends/ptrace/PTrace.cs (PTraceInferior.Step): Don't enter a
method if it's IModule.StepInto is false.
2002-09-27 Martin Baulig <>
* interfaces/IModule.cs: New interface.
* backends/Debugger.cs (DebuggerBackend.Modules): New property to get a
list of loaded modules.
(DebuggerBackend.ModulesChangedEvent): New event.
2002-09-27 Martin Baulig <>
* class/MethodBase.cs: Don't implement IMethodSource, added
protected SetSource() method to set the IMethodSource.
2002-09-27 Martin Baulig <>
* backends/*, arch/*: Removed the SourceFileFactory argument everywhere.
2002-09-27 Martin Baulig <>
* frontends/gui/SourceManager.cs: If ISourceBuffer.HasContents is false,
ISourceBuffer.Name is a filename which we need to load.
* backends/mono-csharp/CSharpMethod.cs: Don't lookup source files.
* arch/DwarfReader.cs: Likewise.
2002-09-27 Miguel de Icaza <>
* frontends/gui/SourceManager.cs: New file, it will hold the
source code manager, and currently also hosts the source listing
widget (it will replace the old code in the future, but I have
ketp it for compatibility reasons).
2002-09-27 Martin Baulig <>
* interfaces/IArchitecture.cs (IArchitecture.GetBreakpointTrampolineData):
New method to read the data from a JIT breakpoint trampoline.
* inferfaces/ILanguageBackends.cs (ILanguageBackend.BreakpointHit): New
method. The language backend may decide to continue the target if hit
a breakpoint.
* backends/ptrace/PTrace.cs (PTraceInferior.Continue): Don't check
the `until' address, this is now done in DebuggerBackend.
* backends/Debugger.cs (DebuggerBackend.Continue): Moved the check
* backends/Debugger.cs (DebuggerBackend.frame_changed): If we hit
a breakpoint and the language backend told us to continue, do so.
* backends/mono-csharp/MonoCSharpLanguageBackend.cs
(MonoCSharpLanguageBackend.BreakpointHit): If we're in the
breakpoint trampoline, get its data but ignore the breakpoint for
the moment.
* backends/server/i386-linux-ptrace.c (server_ptrace_child_stopped):
Send a `(MESSAGE_CHILD_HIT_BREAKPOINT, 0)' if we hit an unknown
breakpoint, ie. there was an `int 3' in the code which we did not insert.
2002-09-26 Martin Baulig <>
* classes/ILDisassembler.cs: Removed. We use the .il which has
been created by the JIT as source code.
2002-09-26 Martin Baulig <>
* backends/Debugger.cs (DebuggerBackend.LoadNativeSymbolTable): New public
property. Only load the native symbol table if this is set.
2002-09-26 Martin Baulig <>
* interfaces/ISourceBuffer.cs (ISourceBuffer.HasContents): New property.
* backends/Debugger.cs: Make the source factory optional and
create an ISourceBuffer without contents if we don't have it.
2002-09-23 Martin Baulig <>
* interfaces/ITargetArray.cs: New interface.
* interfaces/ITargetObject.cs: Replaced location with type, added HasObject
and Object.
* interfaces/ITargetType.cs (ITargetType.GetObject): Removed.
* backends/classes/RelativeTargetLocation.cs: New class.
* backends/mono-csharp/: Improved the type system; we're now supporting
strings and arrays.
2002-09-21 Martin Baulig <>
* README: Added information about the directory layout.
* NEWS: Started to maintain a NEWS file :-)
2002-09-21 Martin Baulig <>
* backends/classes/: New directory.
* backends/classes/TargetReader.cs: Moved here.
* backends/classes/TargetStackLocation.cs: Moved here.
2002-09-21 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs (SymbolTableException):
This exception already exists in class/SymbolTableException.cs.
2002-09-21 Martin Baulig <>
* backends/StepFrame.cs: Moved StepFrame here and made it `public sealed'.
* backends/IInferior.cs (IStepFrame): We don't need this interface.
2002-09-21 Martin Baulig <>
* backends/Debugger.cs (TargetAsyncResult): Make this a private nested class
inside PTraceInferior.
* backends/TargetReader.cs: Moved TargetInfo and TargetReader here.
* backends/ptrace/PTrace.cs: Renamed the class to PTraceInferior.
2002-09-21 Martin Baulig <>
* arch/Bfd.cs, BfdDisassembler.cs, DwarfReader.cs: Made these classes internal.
2002-09-21 Martin Baulig <>
* classes/StackFrame.cs: Moved here and made `public sealed'.
2002-09-21 Martin Baulig <>
* interfaces/ISourceLocation.cs: Removed.
* classes/SourceLocation.cs: This is the only implementation.
2002-09-21 Martin Baulig <>
* interfaces/IBreakPoint.cs: Killed.
2002-09-21 Martin Baulig <>
* interfaces/ISourceFile.cs: Removed.
* classes/SourceFileFactory.cs: This is the only implementation.
2002-09-21 Martin Baulig <>
* interfaces/ISymbolTable.cs (ISymbolTableCollection): Removed this interface.
* classes/SymbolTableCollection.cs: This is the only implementation.
2002-09-21 Martin Baulig <>
* interfaces/IDebuggerBackend.cs: Removed.
* interfaces/IStackFrame.cs: Removed.
* interfaces/IInferior.cs: Moved to ../backends/.
* classes/IOChannel.cs: Moved here from ../backends/ptrace/ and made public.
* classes/Variable.cs: Removed.
* backends/StackFrame.cs: Moved the StackFrame class here and made it public.
* backends/IInferior.cs: Moved here from ../interfaces/.
* backends/TargetStackLocation.cs: Moved here from ../classes/.
* backends/Debugger.cs: It's now called `DebuggerBackend'.
* test/ Create Mono.Debugger.dll and Mono.Debugger.Backend.dll.
2002-09-21 Martin Baulig <>
* interfaces/ILanguageCSharp.cs: Killed.
2002-09-21 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Make this
work with the new symbol table format.
* arch/CoreFile.cs, CoreFileElfI1386.cs: Reading memory and
getting a backtrace works.
2002-09-21 Martin Baulig <>
* interfaces/IMethod.cs (IMethod.Locals): New property.
* backends/mono-csharp/MonoCSharpLanguageBackend.cs (MonoMethod):
Added support for local variables.
2002-09-20 Martin Baulig <>
* interfaces/IStackFrame.cs (IStackFrame.GetLocalVariableLocation): Removed.
(IStackFrame.GetParameterLocation): Removed.
(IStackFrame.TargetMemoryAccess): New property.
* interfaces/ITargetObject.cs: New interface.
2002-09-20 Martin Baulig <>
* interfaces/IInferior.cs (IInferiorStackFrame.Inferior): New property.
* interfaces/ITargetLocation.cs (ITargetLocation.ReValidate): Removed.
(ITargetLocation.Handle): New property.
* interfaces/ITargetMemoryAccess.cs
(ITargetMemoryReader.Size): New property.
(ITargetMemoryReader.Contents): New property.
(ITargetMemoryAccess.GetMemoryStream): Removed.
* backends/mono-csharp/MonoVariable.cs: We can now read a parameter as a blob.
2002-09-20 Martin Baulig <>
Started to add support for variables.
* interfaces/ITargetType.cs: New public interface.
* interfaces/IVariable.cs: New public interface.
* interfaces/IMethod.cs (IMethod.Parameters): New property.
2002-09-20 Martin Baulig <>
* backends/mono-csharp/MonoCSharpLanguageBackend.cs (MonoMethod):
Set IMethod.MethodHandle to the method's Reflection.MethodBase.
2002-09-20 Martin Baulig <>
Started to add support for core files.
* interfaces/IDebuggerBackend.cs (IDebuggerBackend.ReadCoreFile):
New method to read a core file.
* interfaces/ITargetNotification.cs (ITargetNotification): Added
TargetExited event.
(TargetState): Added CORE_FILE.
* arch/CoreFile.cs: New abstract class to read core files.
* arch/CoreFileElfI386.cs: Core file reader for ELF files on the i386.
* frontends/gui/DebuggerGUI.cs (.ctor): Create the interpreter
here since otherwise the `Quit' command won't work.
(LoadProgram): HACK: if the first argument is `core' read a core
file `thecore' in the current directory.
2002-09-19 Martin Baulig <>
* interfaces/ITargetNotification.cs: New file. Moved TargetState
and ITargetNotification here.
* interfaces/IInferior.cs: Put this into the Mono.Debugger.Backends
2002-09-19 Martin Baulig <>
* backends/Debugger.cs: Only dispose the current stack frame if it
has actually changed.
2002-09-19 Martin Baulig <>
* interfaces/ITargetLocation.cs: Make this work again.
* classes/TargetLocation.cs: This is now an abstract base class.
* classes/TargetStackLocation.cs: New class to represent an
address on the stack.
* interfaces/IMethod.cs: Added HasMethodBounds, MethodStartAddress
and MethodEndAddress.
* interfaces/IStackFrame.cs: Added GetLocalVariableLocation and
2002-09-18 Martin Baulig <>
* interface/IStackFrame.cs: Added FrameInvalid event.
* interface/IDebuggerBackend.cs (IDebuggerBackend.GetBackTrace):
Removed all arguments; this method will cache the return value and
emit the FrameInvalid event on each of the returned frames.
* interface/IInferior.cs (IInferior.GetBackTrace): Return an array
of IInternalBackTrace's; this is an internal interface and should
not be used outside of Debugger.cs.
2002-09-18 Martin Baulig <>
* interface/IInferior.cs, IDebuggerBackend.cs: Added Stop() method.
2002-09-18 Martin Baulig <>
* interface/IArchitecture.cs: Made this interface public.
* interface/IDebugerBackend.cs (IDebuggerBackend.Inferior): Removed
this property, the IInferior interface is a private interface.
You implement it when writing a new debugger backend, but it
shouldn't be used outside of Debugger.cs.
2002-09-18 Martin Baulig <>
* interfaces/IDebuggerBackend.cs: Added properties to specify the
application to debug, its command line arguments, environment and
current working directory.
* backend/Debugger.cs: The ctor no longer needs command line
arguments and application name, they're set with the properties.
* frontends/gui/DebuggerGUI.cs: Create a Debugger instance on
startup and use the new properties to set the application.
2002-09-18 Martin Baulig <>
* frontends/gui/DebuggerGUI.cs (DebuggerGUI.LoadProgram): Call
SetBackend() on the source_view.
2002-09-18 Martin Baulig <>
* class/ObjectCache.cs: New public class. Keeps a hard reference
to an object and transforms the hard reference into a weak
reference after a timeout.
* class/DwarfReader.cs, SymbolTable.cs, MethodBase.cs, MethodSource.cs:
Use the new ObjectCache.
2002-09-18 Martin Baulig <>
* class/TargetException (TargetException): Made this abstract.
* class/InternalError.cs: New exception class.
2002-09-18 Martin Baulig <>
* interfaces/ITargetMemoryAccess.cs (ITargetMemoryReader.BinaryReader):
Return a TargetBinaryReader instead of a BinaryReader.
* backends/debugger.cs (TargetReader): Derive from TargetBinaryReader.
* class/TargetBinaryReader.cs: New public class. Moved most of
DwarfReader.DwarfBinaryReader's functionality here. Implement the
Mono.CSharp.Debugger.IMonoBinaryReader interface so that we can
pass an instance of this class to the symbol reader.
* backends/gdb/*: Removed, nothing useful there anymore.
2002-09-18 Miguel de Icaza <>
* frontends/gui/DebuggerGUI.cs: Rework the bootstrap phase for the
program, now it is posisble to specify the program and arguments
from a dialog box, or to pass them on the command line.
Now it guesses the kind of program (managed/unmanaged) without
having to use the `native' prefix.
Added a few more event hooks to the UI.
* frontend/gui/Everything that depends on DebuggerWidget: It no
longer takes a backend argument. The backend is now configured by
a SetBackend virtual method. If you want to hook up to this, you
have to override the method, and extend it.
* frontend/gui/ New user interface similar to
the VisualStudio debugger.
2002-09-17 Miguel de Icaza <>
* frontends/gui/DebuggerGUI.cs: Use embeded
resource instead of loading from the configuration data.
* test/ Embed
Jump to Line
Something went wrong with that request. Please try again.