Martin Baulig 08945c53eb 2002-05-06 Martin Baulig <[email protected]> 24 rokov pred
..
AssemblerWriterI386.cs cc5b7ae7d3 2002-03-29 Martin Baulig <[email protected]> 24 rokov pred
ChangeLog 08945c53eb 2002-05-06 Martin Baulig <[email protected]> 24 rokov pred
IAssemblerWriter.cs cc5b7ae7d3 2002-03-29 Martin Baulig <[email protected]> 24 rokov pred
IMonoSymbolWriter.cs 3bf1341d60 2002-04-13 Martin Baulig <[email protected]> 24 rokov pred
Mono.CSharp.Debugger.build 82b6dfc00a 2002-03-19 Martin Baulig <[email protected]> 24 rokov pred
MonoDwarfFileWriter.cs 411f07fa9b 2002-04-26 Martin Baulig <[email protected]> 24 rokov pred
MonoSymbolDocumentWriter.cs 82b6dfc00a 2002-03-19 Martin Baulig <[email protected]> 24 rokov pred
MonoSymbolWriter.cs 08945c53eb 2002-05-06 Martin Baulig <[email protected]> 24 rokov pred
README 82b6dfc00a 2002-03-19 Martin Baulig <[email protected]> 24 rokov pred
README.relocation-table d85511324c 2002-03-20 Martin Baulig <[email protected]> 24 rokov pred
csharp-lang.c 68a9520f1f 2002-04-26 Martin Baulig <[email protected]> 24 rokov pred
csharp-lang.h 68a9520f1f 2002-04-26 Martin Baulig <[email protected]> 24 rokov pred
csharp-mono-lang.c 68a9520f1f 2002-04-26 Martin Baulig <[email protected]> 24 rokov pred
gdb-csharp-support.patch 68a9520f1f 2002-04-26 Martin Baulig <[email protected]> 24 rokov pred
gdb-variable-scopes.patch 888824eae1 2002-04-12 Martin Baulig <[email protected]> 24 rokov pred

README

This is an implementation of the System.Diagnostics.SymbolStore.ISymbolWriter
interface which writes a dwarf debugging information file.

Unfortunately there are several major problems with this interface and I'm
unsure how to solve them:

1.) The interface contains a constructor method `Initialize' which has an
'IntPtr' emitter argument which seems to be a pointer to the actual
symbol writer which resides in a proprietary, undocumented DLL (I spent
almost 3 hours browsing the ".NET Framework SDK Documentation" and
msdn.microsoft.com - without success.

A short test showed me that mscorlib doesn't like passing zero, this
won't give you the system's default implementation.

To solve this problem, I created a derived interface IMonoSymbolWriter
which contains an additional constructor which only takes the name of
the symbol file as argument.

void Initialize (string filename);

2.) You seem to get an instance of a class implementing this interface by
creating a new instance of System.Reflection.Emit.ModuleBuilder (with the
`bool createSymbolFile' argument) and then calling GetSymWriter() on
the returned object.

So far so good, but how does this method find out which symbol writer
to use ?

3.) According to the documentation, some of the methods of
System.Reflection.Emit.ILGenerator and System.Reflection.Emit.LocalBuilder
seem to use the symbol writer to emit symbol debugging information.

But again, how do these objects get the symbol writer ?

Currently, there are two ways to use this assembly:

a.) Fix the problems outlined above and dynamically load this assembly
(Mono.CSharp.Debugger.dll) when a new symbol writer is created.

b.) Reference this assembly in your application and manually create the
symbol writer using the constructor.