本文整理汇总了C#中Microsoft.Scripting.Interpreter.InterpretedFrame.GetDebugInfo方法的典型用法代码示例。如果您正苦于以下问题:C# InterpretedFrame.GetDebugInfo方法的具体用法?C# InterpretedFrame.GetDebugInfo怎么用?C# InterpretedFrame.GetDebugInfo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.Scripting.Interpreter.InterpretedFrame
的用法示例。
在下文中一共展示了InterpretedFrame.GetDebugInfo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddBacktrace
private static RubyArray/*!*/ AddBacktrace(RubyArray/*!*/ result, IEnumerable<StackFrame> stackTrace,
ref InterpretedFrame interpretedFrame, InterpretedFrame handlerFrame,
bool hasFileAccessPermission, int skipFrames, bool exceptionDetail) {
if (stackTrace != null) {
foreach (StackFrame frame in stackTrace) {
string methodName, file;
int line;
if (InterpretedFrame.IsInterpretedFrame(frame.GetMethod())) {
// TODO: get language context, ask for method name?
// TODO: the trace can get corrupted if Python frame are in the middle - we need to move frame tracing to the interpreter
if (interpretedFrame == null) {
continue;
}
var debugInfo = interpretedFrame.GetDebugInfo(
(interpretedFrame == handlerFrame) ? interpretedFrame.FaultingInstruction : interpretedFrame.InstructionIndex
);
if (debugInfo != null) {
file = debugInfo.FileName;
line = debugInfo.StartLine;
} else {
file = null;
line = 0;
}
methodName = interpretedFrame.Lambda.Name;
TryParseRubyMethodName(ref methodName, ref file, ref line);
interpretedFrame = interpretedFrame.Parent;
} else if (!TryGetStackFrameInfo(frame, hasFileAccessPermission, exceptionDetail, out methodName, out file, out line)) {
continue;
}
if (skipFrames == 0) {
result.Add(MutableString.Create(FormatFrame(file, line, methodName), RubyEncoding.UTF8));
} else {
skipFrames--;
}
}
}
return result;
}