Browse Source

Debugger explicitly releases pdb files

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1248 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 20 years ago
parent
commit
693b30b158
  1. 2
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj
  2. 20
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Interop/CorSym/ISymUnmanagedDispose.cs
  3. 3
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Modules/Module.cs
  4. 7
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Modules/NDebugger-Modules.cs
  5. 98
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Wrappers/CorSym/Autogenerated/ISymUnmanagedDispose.cs
  6. 8
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Wrappers/MetaData/MetaData.cs

2
src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj

@ -366,6 +366,8 @@ @@ -366,6 +366,8 @@
<Compile Include="Src\Wrappers\CorDebug\ICorDebugModule.cs" />
<Compile Include="Src\Wrappers\CorDebug\ICorDebugStringValue.cs" />
<Compile Include="Src\Wrappers\CorDebug\ICorDebugGenericValue.cs" />
<Compile Include="Src\Interop\CorSym\ISymUnmanagedDispose.cs" />
<Compile Include="Src\Wrappers\CorSym\Autogenerated\ISymUnmanagedDispose.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="README.TXT" />

20
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Interop/CorSym/ISymUnmanagedDispose.cs

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
// <version>$Revision$</version>
// </file>
namespace Debugger.Interop.CorSym
{
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[ComImport, InterfaceType((short) 1), Guid("969708D2-05E5-4861-A3B0-96E473CDF63F")]
public interface ISymUnmanagedDispose
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
void Destroy();
}
}

3
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Modules/Module.cs

@ -144,6 +144,9 @@ namespace Debugger @@ -144,6 +144,9 @@ namespace Debugger
public void Dispose()
{
metaData.Dispose();
if (symReader != null) {
symReader.As<ISymUnmanagedDispose>().Destroy();
}
unloaded = true;
}

7
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Modules/NDebugger-Modules.cs

@ -80,6 +80,7 @@ namespace Debugger @@ -80,6 +80,7 @@ namespace Debugger
{
moduleCollection.Remove(module);
OnModuleUnloaded(module);
module.Dispose();
}
internal void RemoveModule(ICorDebugModule corModule)
@ -89,11 +90,9 @@ namespace Debugger @@ -89,11 +90,9 @@ namespace Debugger
internal void ClearModules()
{
foreach (Module m in moduleCollection) {
OnModuleUnloaded(m);
m.Dispose();
while(moduleCollection.Count > 0) {
RemoveModule(moduleCollection[0]);
}
moduleCollection.Clear();
lastAssignedModuleOrderOfLoading = 0;
}
}

98
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Wrappers/CorSym/Autogenerated/ISymUnmanagedDispose.cs

@ -0,0 +1,98 @@ @@ -0,0 +1,98 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
// <version>$Revision$</version>
// </file>
// This file is automatically generated - any changes will be lost
namespace Debugger.Wrappers.CorSym
{
using System;
public partial class ISymUnmanagedDispose
{
private Debugger.Interop.CorSym.ISymUnmanagedDispose wrappedObject;
internal Debugger.Interop.CorSym.ISymUnmanagedDispose WrappedObject
{
get
{
return this.wrappedObject;
}
}
public ISymUnmanagedDispose(Debugger.Interop.CorSym.ISymUnmanagedDispose wrappedObject)
{
this.wrappedObject = wrappedObject;
ResourceManager.TrackCOMObject(wrappedObject, typeof(ISymUnmanagedDispose));
}
public static ISymUnmanagedDispose Wrap(Debugger.Interop.CorSym.ISymUnmanagedDispose objectToWrap)
{
return new ISymUnmanagedDispose(objectToWrap);
}
~ISymUnmanagedDispose()
{
object o = wrappedObject;
wrappedObject = null;
ResourceManager.ReleaseCOMObject(o, typeof(ISymUnmanagedDispose));
}
public bool Is<T>() where T: class
{
try {
CastTo<T>();
return true;
} catch {
return false;
}
}
public T As<T>() where T: class
{
try {
return CastTo<T>();
} catch {
return null;
}
}
public T CastTo<T>() where T: class
{
return (T)Activator.CreateInstance(typeof(T), this.WrappedObject);
}
public static bool operator ==(ISymUnmanagedDispose o1, ISymUnmanagedDispose o2)
{
return ((object)o1 == null && (object)o2 == null) ||
((object)o1 != null && (object)o2 != null && o1.WrappedObject == o2.WrappedObject);
}
public static bool operator !=(ISymUnmanagedDispose o1, ISymUnmanagedDispose o2)
{
return !(o1 == o2);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
public override bool Equals(object o)
{
ISymUnmanagedDispose casted = o as ISymUnmanagedDispose;
return (casted != null) && (casted.WrappedObject == wrappedObject);
}
public void Destroy()
{
this.WrappedObject.Destroy();
}
}
}

8
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Wrappers/MetaData/MetaData.cs

@ -38,13 +38,7 @@ namespace Debugger.Wrappers.MetaData @@ -38,13 +38,7 @@ namespace Debugger.Wrappers.MetaData
public void Dispose()
{
try {
Marshal.FinalReleaseComObject(metaData);
} catch {
Console.WriteLine("metaData release failed. (FinalReleaseComObject)");
} finally {
metaData = null;
}
Marshal.FinalReleaseComObject(metaData);
}
public TypeDefProps GetTypeDefProps(uint typeToken)

Loading…
Cancel
Save