本文整理汇总了C#中Mono.Debugging.Client.BreakEventInfo.SetStatus方法的典型用法代码示例。如果您正苦于以下问题:C# BreakEventInfo.SetStatus方法的具体用法?C# BreakEventInfo.SetStatus怎么用?C# BreakEventInfo.SetStatus使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mono.Debugging.Client.BreakEventInfo
的用法示例。
在下文中一共展示了BreakEventInfo.SetStatus方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnInsertBreakEvent
protected override BreakEventInfo OnInsertBreakEvent (BreakEvent be)
{
BreakEventInfo binfo = new BreakEventInfo ();
lock (documents) {
Breakpoint bp = be as Breakpoint;
if (bp != null) {
if (bp is FunctionBreakpoint) {
// FIXME: implement breaking on function name
binfo.SetStatus (BreakEventStatus.Invalid, null);
return binfo;
} else {
DocInfo doc;
if (!documents.TryGetValue (System.IO.Path.GetFullPath (bp.FileName), out doc)) {
binfo.SetStatus (BreakEventStatus.NotBound, null);
return binfo;
}
int line;
try {
line = doc.Document.FindClosestLine(bp.Line);
}
catch {
// Invalid line
binfo.SetStatus (BreakEventStatus.Invalid, null);
return binfo;
}
ISymbolMethod met = doc.Reader.GetMethodFromDocumentPosition (doc.Document, line, 0);
if (met == null) {
binfo.SetStatus (BreakEventStatus.Invalid, null);
return binfo;
}
int offset = -1;
foreach (SequencePoint sp in met.GetSequencePoints ()) {
if (sp.Line == line && sp.Document.URL == doc.Document.URL) {
offset = sp.Offset;
break;
}
}
if (offset == -1) {
binfo.SetStatus (BreakEventStatus.Invalid, null);
return binfo;
}
CorFunction func = doc.Module.GetFunctionFromToken (met.Token.GetToken ());
CorFunctionBreakpoint corBp = func.ILCode.CreateBreakpoint (offset);
corBp.Activate (bp.Enabled);
breakpoints[corBp] = binfo;
binfo.Handle = corBp;
binfo.SetStatus (BreakEventStatus.Bound, null);
return binfo;
}
}
}
return null;
}
示例2: OnInsertBreakEvent
protected override BreakEventInfo OnInsertBreakEvent (BreakEvent be)
{
Breakpoint bp = be as Breakpoint;
if (bp == null)
throw new NotSupportedException ();
BreakEventInfo bi = new BreakEventInfo ();
lock (gdbLock) {
bool dres = InternalStop ();
try {
string extraCmd = string.Empty;
if (bp.HitCount > 0) {
extraCmd += "-i " + bp.HitCount;
breakpointsWithHitCount.Add (bi);
}
if (!string.IsNullOrEmpty (bp.ConditionExpression)) {
if (!bp.BreakIfConditionChanges)
extraCmd += " -c " + bp.ConditionExpression;
}
GdbCommandResult res = null;
string errorMsg = null;
if (bp is FunctionBreakpoint) {
try {
res = RunCommand ("-break-insert", extraCmd.Trim (), ((FunctionBreakpoint) bp).FunctionName);
} catch (Exception ex) {
errorMsg = ex.Message;
}
} else {
// Breakpoint locations must be double-quoted if files contain spaces.
// For example: -break-insert "\"C:/Documents and Settings/foo.c\":17"
RunCommand ("-environment-directory", Escape (Path.GetDirectoryName (bp.FileName)));
try {
res = RunCommand ("-break-insert", extraCmd.Trim (), Escape (Escape (bp.FileName) + ":" + bp.Line));
} catch (Exception ex) {
errorMsg = ex.Message;
}
if (res == null) {
try {
res = RunCommand ("-break-insert", extraCmd.Trim (), Escape (Escape (Path.GetFileName (bp.FileName)) + ":" + bp.Line));
}
catch {
// Ignore
}
}
}
if (res == null) {
bi.SetStatus (BreakEventStatus.Invalid, errorMsg);
return bi;
}
int bh = res.GetObject ("bkpt").GetInt ("number");
if (!be.Enabled)
RunCommand ("-break-disable", bh.ToString ());
breakpoints [bh] = bi;
bi.Handle = bh;
bi.SetStatus (BreakEventStatus.Bound, null);
return bi;
} finally {
InternalResume (dres);
}
}
}
示例3: OnInsertBreakEvent
protected override BreakEventInfo OnInsertBreakEvent(BreakEvent be)
{
LogWriter(false, "Break inserted\n");
Breakpoint bp = be as Breakpoint;
if (bp == null)
throw new NotSupportedException ();
BreakEventInfo bi = new BreakEventInfo ();
//lock (debuggerLock) {
LogWriter(false, "Location is " + PathHelper.CutOffClassPath(classPathes, bp.FileName) + ":" + bp.Line + '\n');
breaks.Add (new Break (PathHelper.CutOffClassPath (classPathes, bp.FileName), bp.Line));
//}
//bi.Handle = TODO: add returned success value (break count etc)
bi.SetStatus (BreakEventStatus.Bound, null);
return bi;
}
示例4: OnInsertBreakEvent
protected override BreakEventInfo OnInsertBreakEvent(BreakEvent be)
{
Breakpoint bp = be as Breakpoint;
if (bp == null)
throw new NotSupportedException ();
BreakEventInfo breakEventInfo = new BreakEventInfo ();
//bool dres = InternalStop ();
try {
string extraCmd = string.Empty;
if (bp.HitCount > 0) {
extraCmd += "-i " + bp.HitCount;
breakpointsWithHitCount.Add (breakEventInfo);
}
if (!string.IsNullOrEmpty (bp.ConditionExpression)) {
if (!bp.BreakIfConditionChanges)
extraCmd += " -c " + bp.ConditionExpression;
}
ulong bh = 0;
DebugEngineWrapper.BreakPoint engineBreakPoint = null;
ulong off = 0;
if (Engine.Symbols.GetOffsetByLine(bp.FileName, (uint)bp.Line, out off))
{
engineBreakPoint = Engine.AddBreakPoint(BreakPointOptions.Enabled);
engineBreakPoint.Offset = off;
bh = engineBreakPoint.Offset;
breakpoints[bh] = new BreakPointWrapper(breakEventInfo, engineBreakPoint);
breakEventInfo.Handle = bh;
breakEventInfo.SetStatus(BreakEventStatus.Bound, null);
//if (!be.Enabled)
//ToDo: tell debugger engine that breakpoint is disabled
}
else
{
breakEventInfo.SetStatus(BreakEventStatus.BindError, null);
}
return breakEventInfo;
} finally {
//InternalResume (dres);
}
}
示例5: FireBreakPoint
void FireBreakPoint(ulong offset)
{
TargetEventArgs args = new TargetEventArgs(TargetEventType.TargetHitBreakpoint);
ulong tempoff = (ulong)offset;
if (breakpoints.ContainsKey(tempoff))
{
breakpoints[(ulong)tempoff].EventInfo.UpdateHitCount((int)breakpoints[(ulong)tempoff].Breakpoint.HitCount);
args.BreakEvent = breakpoints[(ulong)tempoff].EventInfo.BreakEvent;
}
else
{
args = new TargetEventArgs(TargetEventType.TargetStopped);
BreakEventInfo breakInfo = new BreakEventInfo();
breakInfo.Handle = tempoff;
breakInfo.SetStatus (BreakEventStatus.Bound, null);
string fn;
uint ln;
if (Engine.Symbols.GetLineByOffset(offset, out fn, out ln))
{
//breakInfo.BreakEvent = new Breakpoint(fn, (int)ln);
args.BreakEvent = breakInfo.BreakEvent;
}
}
ProcessInfo process = OnGetProcesses()[0];
args.Process = new ProcessInfo(process.Id, process.Name);
args.Backtrace = new Backtrace(new DDebugBacktrace(this, activeThread, Engine));
ThreadPool.QueueUserWorkItem(delegate(object data)
{
try
{
OnTargetEvent((TargetEventArgs)data);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}, args);
}
示例6: OnInsertBreakEvent
protected override BreakEventInfo OnInsertBreakEvent (BreakEvent breakEvent)
{
var bp = breakEvent as Breakpoint;
if(bp == null)
throw new NotImplementedException ();
unityDebugProtocol.AddBreakpoint (bp.FileName, bp.Line);
var eventInfo = new BreakEventInfo ();
eventInfo.SetStatus (BreakEventStatus.Bound, null);
return eventInfo;
}
示例7: OnInsertBreakEvent
protected override BreakEventInfo OnInsertBreakEvent (BreakEvent breakEvent)
{
var binfo = new BreakEventInfo ();
var bp = breakEvent as Breakpoint;
if (bp != null) {
if (bp is FunctionBreakpoint) {
// FIXME: implement breaking on function name
binfo.SetStatus (BreakEventStatus.Invalid, null);
return binfo;
} else {
DocInfo doc;
if (!documents.TryGetValue (System.IO.Path.GetFullPath (bp.FileName), out doc)) {
binfo.SetStatus (BreakEventStatus.NotBound, "Cannot find source file in pdb/mdb debugging database.");
return binfo;
}
MethodSymbols met = doc.GetClosestMethod (bp.Line);
int offset = -1;
foreach (var sp in met.Instructions) {
if (sp.SequencePoint.StartLine == bp.Line) {
offset = sp.Offset;
break;
}
}
if (offset == -1) {
if (bp.Line < met.Instructions.First ().SequencePoint.StartLine)
offset = met.Instructions.First ().Offset;
else
offset = met.Instructions.Last ().Offset;
}
CorDebugFunction func = doc.Assembly.GetFunctionFromTokenCLR (met.MethodToken.ToUInt32 ());
CorDebugFunctionBreakpoint corBp = func.ILCode.CreateBreakpoint ((uint)offset);
corBp.Active = bp.Enabled;
binfo.Handle = corBp;
binfo.SetStatus (BreakEventStatus.Bound, null);
return binfo;
}
}
// var cp = breakEvent as Catchpoint;
// if (cp != null) {
// foreach (ModuleInfo mod in modules.Values) {
// CorMetadataImport mi = mod.Importer;
// if (mi != null) {
// foreach (Type t in mi.DefinedTypes)
// if (t.FullName == cp.ExceptionName) {
// binfo.SetStatus (BreakEventStatus.Bound, null);
// return binfo;
// }
// }
// }
// }
binfo.SetStatus (BreakEventStatus.Invalid, null);
return binfo;
}
示例8: OnInsertBreakEvent
protected override BreakEventInfo OnInsertBreakEvent(BreakEvent be)
{
Breakpoint bp = be as Breakpoint;
if (bp == null)
throw new NotSupportedException();
BreakEventInfo breakEventInfo = new BreakEventInfo();
if (bp.HitCount > 0)
{
breakpointsWithHitCount.Add(breakEventInfo);
}
ulong address = this.SymbolResolver.GetAddressFromCodeLine(bp.FileName, (ushort)bp.Line);
if (address != 0)
{
breakpointcounter++;
debuggee.SetBreakPoint(address);
breakpoints[address] = new BreakPointWrapper(breakpointcounter, breakEventInfo);
breakEventInfo.Handle = address;
breakEventInfo.SetStatus(BreakEventStatus.Bound, null);
}
else
{
breakEventInfo.SetStatus(BreakEventStatus.BindError, null);
}
return breakEventInfo;
}
示例9: FireBreakPoint
void FireBreakPoint(ulong address)
{
TargetEventArgs args = new TargetEventArgs(TargetEventType.TargetHitBreakpoint);
ulong tempAddress = address;
if (breakpoints.ContainsKey(tempAddress))
{
//breakpoints[(ulong)tempoff].EventInfo.UpdateHitCount((int)breakpoints[(ulong)tempoff].Breakpoint.HitCount);
args.BreakEvent = breakpoints[tempAddress].EventInfo.BreakEvent;
}
else
{
args = new TargetEventArgs(TargetEventType.TargetStopped);
BreakEventInfo breakInfo = new BreakEventInfo();
breakInfo.Handle = tempAddress;
breakInfo.SetStatus(BreakEventStatus.Bound, null);
string filename;
uint line;
if (this.SymbolResolver.GetCodeLineFromAddress(address, out filename, out line))
{
args.BreakEvent = breakInfo.BreakEvent;
}
}
ProcessInfo process = OnGetProcesses()[0];
args.Process = new ProcessInfo(process.Id, process.Name);
args.Backtrace = new Backtrace(new DDebugBacktrace(this, activeThread, this.debuggee));//, Engine));
args.Thread = GetThread(activeThread);
ThreadPool.QueueUserWorkItem(delegate(object data)
{
try
{
OnTargetEvent((TargetEventArgs)data);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}, args);
}
示例10: OnInsertBreakEvent
protected override BreakEventInfo OnInsertBreakEvent(BreakEvent be)
{
Breakpoint bp = be as Breakpoint;
if (bp == null)
throw new NotSupportedException ();
BreakEventInfo bi = new BreakEventInfo ();
lock (nodeLock) {
bool dres = InternalStop ();
try {
string handle;
try {
if (bp is FunctionBreakpoint) {
var bf = (FunctionBreakpoint) bp;
handle = "function " + bf.FunctionName;
var ret = debugger.SetBreakpoint ("function", bf.FunctionName, be.Enabled, -1, -1, bp.ConditionExpression, bp.HitCount);
} else {
handle = string.Format ("{0} ({1},1)", bp.FileName, bp.Line);
var ret = debugger.SetBreakpoint ("script", bp.FileName, be.Enabled, bp.Line, 1, bp.ConditionExpression, bp.HitCount);
}
} catch (Exception ex) {
bi.SetStatus (BreakEventStatus.Invalid, ex.Message);
return bi;
}
bi.Handle = handle;
bi.SetStatus (BreakEventStatus.Bound, null);
return bi;
} finally {
InternalResume (dres);
}
}
}