JintDebuggerStatement.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using Esprima.Ast;
  2. using Jint.Runtime.Debugger;
  3. namespace Jint.Runtime.Interpreter.Statements
  4. {
  5. internal sealed class JintDebuggerStatement : JintStatement<DebuggerStatement>
  6. {
  7. public JintDebuggerStatement(Engine engine, DebuggerStatement statement) : base(engine, statement)
  8. {
  9. }
  10. protected override Completion ExecuteInternal()
  11. {
  12. switch (_engine.Options._DebuggerStatementHandling)
  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. case DebuggerStatementHandling.Script:
  22. _engine.DebugHandler?.OnBreak(_statement);
  23. break;
  24. case DebuggerStatementHandling.Ignore:
  25. break;
  26. }
  27. return new Completion(CompletionType.Normal, null, null, Location);
  28. }
  29. }
  30. }