summaryrefslogtreecommitdiff
path: root/cli/worker.rs
diff options
context:
space:
mode:
authorBert Belder <bertbelder@gmail.com>2020-04-03 19:40:11 +0200
committerGitHub <noreply@github.com>2020-04-03 13:40:11 -0400
commitc0cb198114ccc2dc4fa2764d307ad985c456882a (patch)
treed805b82639334dc2126dccd03dcbcfb62ef12f14 /cli/worker.rs
parent3f489ae1aeff6f27b2214dc8201ed068abd5f973 (diff)
Make inspector more robust, add --inspect-brk support (#4552)
Diffstat (limited to 'cli/worker.rs')
-rw-r--r--cli/worker.rs47
1 files changed, 36 insertions, 11 deletions
diff --git a/cli/worker.rs b/cli/worker.rs
index 994f22f04..7c102a602 100644
--- a/cli/worker.rs
+++ b/cli/worker.rs
@@ -1,6 +1,8 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
use crate::fmt_errors::JSError;
+use crate::inspector::DenoInspector;
use crate::ops;
+use crate::state::DebugType;
use crate::state::State;
use deno_core;
use deno_core::Buf;
@@ -97,7 +99,7 @@ pub struct Worker {
pub waker: AtomicWaker,
pub(crate) internal_channels: WorkerChannelsInternal,
external_channels: WorkerHandle,
- inspector: Option<Box<crate::inspector::DenoInspector>>,
+ inspector: Option<Box<DenoInspector>>,
}
impl Worker {
@@ -107,10 +109,18 @@ impl Worker {
let global_state = state.borrow().global_state.clone();
- let inspector = global_state
- .inspector_server
- .as_ref()
- .map(|s| s.add_inspector(&mut *isolate));
+ let inspect = global_state.flags.inspect.as_ref();
+ let inspect_brk = global_state.flags.inspect_brk.as_ref();
+ let inspector = inspect
+ .or(inspect_brk)
+ .and_then(|host| match state.borrow().debug_type {
+ DebugType::Main if inspect_brk.is_some() => Some((host, true)),
+ DebugType::Main | DebugType::Dependent => Some((host, false)),
+ DebugType::Internal => None,
+ })
+ .map(|(host, wait_for_debugger)| {
+ DenoInspector::new(&mut isolate, *host, wait_for_debugger)
+ });
isolate.set_js_error_create_fn(move |core_js_error| {
JSError::create(core_js_error, &global_state.ts_compiler)
@@ -287,8 +297,13 @@ mod tests {
let module_specifier =
ModuleSpecifier::resolve_url_or_path(&p.to_string_lossy()).unwrap();
let global_state = GlobalState::new(flags::Flags::default()).unwrap();
- let state =
- State::new(global_state, None, module_specifier.clone()).unwrap();
+ let state = State::new(
+ global_state,
+ None,
+ module_specifier.clone(),
+ DebugType::Main,
+ )
+ .unwrap();
let state_ = state.clone();
tokio_util::run_basic(async move {
let mut worker =
@@ -316,8 +331,13 @@ mod tests {
let module_specifier =
ModuleSpecifier::resolve_url_or_path(&p.to_string_lossy()).unwrap();
let global_state = GlobalState::new(flags::Flags::default()).unwrap();
- let state =
- State::new(global_state, None, module_specifier.clone()).unwrap();
+ let state = State::new(
+ global_state,
+ None,
+ module_specifier.clone(),
+ DebugType::Main,
+ )
+ .unwrap();
let state_ = state.clone();
tokio_util::run_basic(async move {
let mut worker =
@@ -354,8 +374,13 @@ mod tests {
..flags::Flags::default()
};
let global_state = GlobalState::new(flags).unwrap();
- let state =
- State::new(global_state.clone(), None, module_specifier.clone()).unwrap();
+ let state = State::new(
+ global_state.clone(),
+ None,
+ module_specifier.clone(),
+ DebugType::Main,
+ )
+ .unwrap();
let mut worker = MainWorker::new(
"TEST".to_string(),
startup_data::deno_isolate_init(),