JintDebuggerStatement.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. using Jint.Native;
  2. using Jint.Runtime.Debugger;
  3. namespace Jint.Runtime.Interpreter.Statements;
  4. internal sealed class JintDebuggerStatement : JintStatement<DebuggerStatement>
  5. {
  6. public JintDebuggerStatement(DebuggerStatement statement) : base(statement)
  7. {
  8. }
  9. protected override Completion ExecuteInternal(EvaluationContext context)
  10. {
  11. var engine = context.Engine;
  12. switch (engine.Options.Debugger.StatementHandling)
  13. {
  14. case DebuggerStatementHandling.Clr:
  15. if (!System.Diagnostics.Debugger.IsAttached)
  16. {
  17. System.Diagnostics.Debugger.Launch();
  18. }
  19. System.Diagnostics.Debugger.Break();
  20. break;
  21. // DebugHandler handles DebuggerStatementHandling.Script during OnStep
  22. case DebuggerStatementHandling.Script:
  23. case DebuggerStatementHandling.Ignore:
  24. break;
  25. }
  26. return new Completion(CompletionType.Normal, JsEmpty.Instance, _statement);
  27. }
  28. }