Browse Source

Debugger tests compile (but fail)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2206 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 20 years ago
parent
commit
0d1b123a4d
  1. 2
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger.cs
  2. 11
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Process-StateControl.cs
  3. 8
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs
  4. 5
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/NDebugger-Processes.cs
  5. 1
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Process.cs
  6. 44
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/NamedValueCollection.cs
  7. 4
      src/AddIns/Misc/Debugger/Debugger.Tests/Project/Debugger.Tests.csproj
  8. 1114
      src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/DebuggerTests.cs

2
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger.cs

@ -119,8 +119,6 @@ namespace Debugger @@ -119,8 +119,6 @@ namespace Debugger
Wrappers.ResourceManager.TraceMessagesEnabled = false;
TraceMessage("Tracked COM objects released");
noProcessesHandle.Set();
}
/// <summary>

11
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Process-StateControl.cs

@ -13,7 +13,8 @@ namespace Debugger @@ -13,7 +13,8 @@ namespace Debugger
public partial class Process
{
bool pauseOnHandledException = false;
internal ManualResetEvent pausedHandle = new ManualResetEvent(false);
ManualResetEvent exited = new ManualResetEvent(false);
ManualResetEvent pausedHandle = new ManualResetEvent(false);
DebugeeState debugeeState;
@ -136,17 +137,17 @@ namespace Debugger @@ -136,17 +137,17 @@ namespace Debugger
/// </summary>
public void WaitForPause()
{
if (debugger.MTA2STA.SoftWait(PausedHandle, debugger.noProcessesHandle) == 1) {
if (debugger.MTA2STA.SoftWait(PausedHandle, exited) == 1) {
throw new DebuggerException("Process exited before pausing");
}
}
/// <summary>
/// Waits until all debugged precesses exit. Returns imideately if there are no running processes.
/// Waits until the precesses exits.
/// </summary>
public void WaitForPrecessExit()
public void WaitForExit()
{
debugger.MTA2STA.SoftWait(debugger.noProcessesHandle);
debugger.MTA2STA.SoftWait(exited);
}
/// <summary>

8
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs

@ -512,7 +512,13 @@ namespace Debugger @@ -512,7 +512,13 @@ namespace Debugger
}
/// <summary> Gets all local variables of the function. </summary>
public IEnumerable<LocalVariable> LocalVariables {
public NamedValueCollection LocalVariables {
get {
return new NamedValueCollection(LocalVariablesEnum);
}
}
IEnumerable<NamedValue> LocalVariablesEnum {
get {
if (symMethod != null) { // TODO: Is this needed?
ISymUnmanagedScope symRootScope = symMethod.RootScope;

5
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/NDebugger-Processes.cs

@ -17,9 +17,6 @@ namespace Debugger @@ -17,9 +17,6 @@ namespace Debugger
{
List<Process> processCollection = new List<Process>();
// Is set as long as the process count is zero
internal ManualResetEvent noProcessesHandle = new ManualResetEvent(true);
public event EventHandler<ProcessEventArgs> ProcessStarted;
public event EventHandler<ProcessEventArgs> ProcessExited;
@ -43,14 +40,12 @@ namespace Debugger @@ -43,14 +40,12 @@ namespace Debugger
{
processCollection.Add(process);
OnProcessStarted(process);
noProcessesHandle.Reset();
}
internal void RemoveProcess(Process process)
{
processCollection.Remove(process);
OnProcessExited(process);
// noProcessesHandle is set in NDebugger.TerminateDebugger
if (processCollection.Count == 0) {
// Exit callback and then terminate the debugger
this.MTA2STA.AsyncCall( delegate { this.TerminateDebugger(); } );

1
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Process.cs

@ -41,6 +41,7 @@ namespace Debugger @@ -41,6 +41,7 @@ namespace Debugger
if (Expired != null) {
Expired(this, new ProcessEventArgs(this));
}
exited.Set();
debugger.RemoveProcess(this);
}
}

44
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/NamedValueCollection.cs

@ -18,41 +18,61 @@ namespace Debugger @@ -18,41 +18,61 @@ namespace Debugger
{
internal static NamedValueCollection Empty = new NamedValueCollection(new NamedValue[0]);
Dictionary<string, List<NamedValue>> collection = new Dictionary<string, List<NamedValue>>();
List<NamedValue> list = new List<NamedValue>();
Dictionary<string, List<NamedValue>> hashtable = new Dictionary<string, List<NamedValue>>();
IEnumerator<NamedValue> IEnumerable<NamedValue>.GetEnumerator()
{
foreach(KeyValuePair<string, List<NamedValue>> kvp in collection) {
foreach(NamedValue namedValue in kvp.Value) {
yield return namedValue;
}
foreach(NamedValue namedValue in list) {
yield return namedValue;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable<NamedValue>)this).GetEnumerator();
foreach(NamedValue namedValue in list) {
yield return namedValue;
}
}
internal NamedValueCollection(IEnumerable<NamedValue> namedValues)
{
foreach(NamedValue namedValue in namedValues) {
string name = namedValue.Name;
if (collection.ContainsKey(name)) {
collection[name].Add(namedValue);
if (hashtable.ContainsKey(name)) {
hashtable[name].Add(namedValue);
} else {
collection[name] = new List<NamedValue>(new NamedValue[] {namedValue});
hashtable[name] = new List<NamedValue>(new NamedValue[] {namedValue});
}
list.Add(namedValue);
}
}
/// <summary>
/// Gets number of <see cref="Debugger.NamedValue">named values</see> contained in the collection
/// </summary>
public int Count {
get {
return list.Count;
}
}
/// <summary>
/// Gets a value by index
/// </summary>
public NamedValue this[int i] {
get {
return list[i];
}
}
/// <summary>
/// Gets a value by its name.
/// </summary>
public virtual NamedValue this[string variableName] {
public NamedValue this[string variableName] {
get {
if (collection.ContainsKey(variableName)) {
foreach(NamedValue namedValue in collection[variableName]) {
if (hashtable.ContainsKey(variableName)) {
foreach(NamedValue namedValue in hashtable[variableName]) {
return namedValue;
}
}

4
src/AddIns/Misc/Debugger/Debugger.Tests/Project/Debugger.Tests.csproj

@ -63,10 +63,6 @@ @@ -63,10 +63,6 @@
<ItemGroup>
<Folder Include="Src" />
<Folder Include="Configuration" />
<ProjectReference Include="..\..\Debugger.AddIn\Project\Debugger.AddIn.csproj">
<Project>{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}</Project>
<Name>Debugger.AddIn</Name>
</ProjectReference>
<ProjectReference Include="..\..\Debugger.Core\Project\Debugger.Core.csproj">
<Project>{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}</Project>
<Name>Debugger.Core</Name>

1114
src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/DebuggerTests.cs

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save