Loading...
Searching...
No Matches
v8-inspector.h
Go to the documentation of this file.
1// Copyright 2016 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_V8_INSPECTOR_H_
6#define V8_V8_INSPECTOR_H_
7
8#include <stdint.h>
9
10#include <cctype>
11#include <memory>
12
13#include "v8-isolate.h" // NOLINT(build/include_directory)
14#include "v8-local-handle.h" // NOLINT(build/include_directory)
15
16namespace v8 {
17class Context;
18class Name;
19class Object;
20class StackTrace;
21class Value;
22} // namespace v8
23
24namespace v8_inspector {
25
26namespace internal {
27class V8DebuggerId;
28} // namespace internal
29
30namespace protocol {
31namespace Debugger {
32namespace API {
33class SearchMatch;
34}
35} // namespace Debugger
36namespace Runtime {
37namespace API {
38class RemoteObject;
39class StackTrace;
40class StackTraceId;
41} // namespace API
42} // namespace Runtime
43namespace Schema {
44namespace API {
45class Domain;
46}
47} // namespace Schema
48} // namespace protocol
49
51 public:
52 StringView() : m_is8Bit(true), m_length(0), m_characters8(nullptr) {}
53
54 StringView(const uint8_t* characters, size_t length)
55 : m_is8Bit(true), m_length(length), m_characters8(characters) {}
56
57 StringView(const uint16_t* characters, size_t length)
58 : m_is8Bit(false), m_length(length), m_characters16(characters) {}
59
60 bool is8Bit() const { return m_is8Bit; }
61 size_t length() const { return m_length; }
62
63 // TODO(dgozman): add DCHECK(m_is8Bit) to accessors once platform can be used
64 // here.
65 const uint8_t* characters8() const { return m_characters8; }
66 const uint16_t* characters16() const { return m_characters16; }
67
68 private:
69 bool m_is8Bit;
70 size_t m_length;
71 union {
72 const uint8_t* m_characters8;
73 const uint16_t* m_characters16;
74 };
75};
76
78 public:
79 virtual ~StringBuffer() = default;
80 virtual StringView string() const = 0;
81 // This method copies contents.
82 static std::unique_ptr<StringBuffer> create(StringView);
83};
84
86 public:
87 V8ContextInfo(v8::Local<v8::Context> context, int contextGroupId,
88 StringView humanReadableName)
89 : context(context),
90 contextGroupId(contextGroupId),
91 humanReadableName(humanReadableName),
92 hasMemoryOnConsole(false) {}
93
95 // Each v8::Context is a part of a group. The group id must be non-zero.
101
103
104 // Disallow copying and allocating this one.
105 enum NotNullTagEnum { NotNullLiteral };
106 void* operator new(size_t) = delete;
107 void* operator new(size_t, NotNullTagEnum, void*) = delete;
108 void* operator new(size_t, void*) = delete;
109 V8ContextInfo(const V8ContextInfo&) = delete;
111};
112
113// This debugger id tries to be unique by generating two random
114// numbers, which should most likely avoid collisions.
115// Debugger id has a 1:1 mapping to context group. It is used to
116// attribute stack traces to a particular debugging, when doing any
117// cross-debugger operations (e.g. async step in).
118// See also Runtime.UniqueDebuggerId in the protocol.
120 public:
121 V8DebuggerId() = default;
122 V8DebuggerId(const V8DebuggerId&) = default;
124
125 std::unique_ptr<StringBuffer> toString() const;
126 bool isValid() const;
127 std::pair<int64_t, int64_t> pair() const;
128
129 private:
130 friend class internal::V8DebuggerId;
131 explicit V8DebuggerId(std::pair<int64_t, int64_t>);
132
133 int64_t m_first = 0;
134 int64_t m_second = 0;
135};
136
143};
144
146 public:
148 virtual bool isEmpty() const = 0;
149 virtual StringView topSourceURL() const = 0;
150 virtual int topLineNumber() const = 0;
151 virtual int topColumnNumber() const = 0;
152 virtual int topScriptId() const = 0;
153 virtual StringView topFunctionName() const = 0;
154
155 virtual ~V8StackTrace() = default;
156 virtual std::unique_ptr<protocol::Runtime::API::StackTrace>
157 buildInspectorObject(int maxAsyncDepth) const = 0;
158 virtual std::unique_ptr<StringBuffer> toString() const = 0;
159
160 // Safe to pass between threads, drops async chain.
161 virtual std::unique_ptr<V8StackTrace> clone() = 0;
162
163 virtual std::vector<V8StackFrame> frames() const = 0;
164};
165
167 public:
168 virtual ~V8InspectorSession() = default;
169
170 // Cross-context inspectable values (DOM nodes in different worlds, etc.).
172 public:
174 virtual ~Inspectable() = default;
175 };
176 virtual void addInspectedObject(std::unique_ptr<Inspectable>) = 0;
177
178 // Dispatching protocol messages.
179 static bool canDispatchMethod(StringView method);
180 virtual void dispatchProtocolMessage(StringView message) = 0;
181 virtual std::vector<uint8_t> state() = 0;
182 virtual std::vector<std::unique_ptr<protocol::Schema::API::Domain>>
184
185 // Debugger actions.
186 virtual void schedulePauseOnNextStatement(StringView breakReason,
187 StringView breakDetails) = 0;
188 virtual void cancelPauseOnNextStatement() = 0;
189 virtual void breakProgram(StringView breakReason,
190 StringView breakDetails) = 0;
191 virtual void setSkipAllPauses(bool) = 0;
192 virtual void resume(bool setTerminateOnResume = false) = 0;
193 virtual void stepOver() = 0;
194 virtual std::vector<std::unique_ptr<protocol::Debugger::API::SearchMatch>>
195 searchInTextByLines(StringView text, StringView query, bool caseSensitive,
196 bool isRegex) = 0;
197
198 // Remote objects.
199 virtual std::unique_ptr<protocol::Runtime::API::RemoteObject> wrapObject(
201 bool generatePreview) = 0;
202
203 virtual bool unwrapObject(std::unique_ptr<StringBuffer>* error,
206 std::unique_ptr<StringBuffer>* objectGroup) = 0;
209
211 enum class ResultType {
212 kNotRun,
213 kSuccess,
214 kException,
215 };
216
219 };
220 // Evalaute 'expression' in the provided context. Does the same as
221 // Runtime#evaluate under-the-hood but exposed on the C++ side.
223 StringView expression,
224 bool includeCommandLineAPI = false) = 0;
225
226 // Prepare for shutdown (disables debugger pausing, etc.).
227 virtual void stop() = 0;
228};
229
231 explicit DeepSerializedValue(std::unique_ptr<StringBuffer> type,
232 v8::MaybeLocal<v8::Value> value = {})
233 : type(std::move(type)), value(value) {}
234 std::unique_ptr<StringBuffer> type;
236};
237
240 std::unique_ptr<DeepSerializedValue> serializedValue)
241 : serializedValue(std::move(serializedValue)), isSuccess(true) {}
242 explicit DeepSerializationResult(std::unique_ptr<StringBuffer> errorMessage)
243 : errorMessage(std::move(errorMessage)), isSuccess(false) {}
244
245 // Use std::variant when available.
246 std::unique_ptr<DeepSerializedValue> serializedValue;
247 std::unique_ptr<StringBuffer> errorMessage;
249};
250
252 public:
253 virtual ~V8InspectorClient() = default;
254
255 virtual void runMessageLoopOnPause(int contextGroupId) {}
256 virtual void runMessageLoopOnInstrumentationPause(int contextGroupId) {
257 runMessageLoopOnPause(contextGroupId);
258 }
259 virtual void quitMessageLoopOnPause() {}
260 virtual void runIfWaitingForDebugger(int contextGroupId) {}
261
262 virtual void muteMetrics(int contextGroupId) {}
263 virtual void unmuteMetrics(int contextGroupId) {}
264
265 virtual void beginUserGesture() {}
266 virtual void endUserGesture() {}
267
268 virtual std::unique_ptr<DeepSerializationResult> deepSerialize(
269 v8::Local<v8::Value> v8Value, int maxDepth,
270 v8::Local<v8::Object> additionalParameters) {
271 return nullptr;
272 }
273 virtual std::unique_ptr<StringBuffer> valueSubtype(v8::Local<v8::Value>) {
274 return nullptr;
275 }
276 virtual std::unique_ptr<StringBuffer> descriptionForValueSubtype(
278 return nullptr;
279 }
280 virtual bool isInspectableHeapObject(v8::Local<v8::Object>) { return true; }
281
283 int contextGroupId) {
284 return v8::Local<v8::Context>();
285 }
286 virtual void beginEnsureAllContextsInGroup(int contextGroupId) {}
287 virtual void endEnsureAllContextsInGroup(int contextGroupId) {}
288
291 virtual void consoleAPIMessage(int contextGroupId,
293 const StringView& message,
294 const StringView& url, unsigned lineNumber,
295 unsigned columnNumber, V8StackTrace*) {}
299 }
300
301 virtual void consoleTime(v8::Isolate* isolate, v8::Local<v8::String> label) {}
302 virtual void consoleTimeEnd(v8::Isolate* isolate,
303 v8::Local<v8::String> label) {}
304 virtual void consoleTimeStamp(v8::Isolate* isolate,
305 v8::Local<v8::String> label) {}
306
307 virtual void consoleClear(int contextGroupId) {}
308 virtual double currentTimeMS() { return 0; }
309 typedef void (*TimerCallback)(void*);
310 virtual void startRepeatingTimer(double, TimerCallback, void* data) {}
311 virtual void cancelTimer(void* data) {}
312
313 // TODO(dgozman): this was added to support service worker shadow page. We
314 // should not connect at all.
315 virtual bool canExecuteScripts(int contextGroupId) { return true; }
316
317 virtual void maxAsyncCallStackDepthChanged(int depth) {}
318
319 virtual std::unique_ptr<StringBuffer> resourceNameToUrl(
320 const StringView& resourceName) {
321 return nullptr;
322 }
323
324 // The caller would defer to generating a random 64 bit integer if
325 // this method returns 0.
326 virtual int64_t generateUniqueId() { return 0; }
327
330};
331
332// These stack trace ids are intended to be passed between debuggers and be
333// resolved later. This allows to track cross-debugger calls and step between
334// them if a single client connects to multiple debuggers.
336 uintptr_t id;
337 std::pair<int64_t, int64_t> debugger_id;
338 bool should_pause = false;
339
342 V8StackTraceId(uintptr_t id, const std::pair<int64_t, int64_t> debugger_id);
343 V8StackTraceId(uintptr_t id, const std::pair<int64_t, int64_t> debugger_id,
344 bool should_pause);
348 ~V8StackTraceId() = default;
349
350 bool IsInvalid() const;
351 std::unique_ptr<StringBuffer> ToString();
352};
353
355 public:
356 static std::unique_ptr<V8Inspector> create(v8::Isolate*, V8InspectorClient*);
357 virtual ~V8Inspector() = default;
358
359 // Contexts instrumentation.
360 virtual void contextCreated(const V8ContextInfo&) = 0;
362 virtual void resetContextGroup(int contextGroupId) = 0;
363 virtual v8::MaybeLocal<v8::Context> contextById(int contextId) = 0;
364 virtual V8DebuggerId uniqueDebuggerId(int contextId) = 0;
365
366 // Various instrumentation.
367 virtual void idleStarted() = 0;
368 virtual void idleFinished() = 0;
369
370 // Async stack traces instrumentation.
371 virtual void asyncTaskScheduled(StringView taskName, void* task,
372 bool recurring) = 0;
373 virtual void asyncTaskCanceled(void* task) = 0;
374 virtual void asyncTaskStarted(void* task) = 0;
375 virtual void asyncTaskFinished(void* task) = 0;
376 virtual void allAsyncTasksCanceled() = 0;
377
379 virtual void externalAsyncTaskStarted(const V8StackTraceId& parent) = 0;
380 virtual void externalAsyncTaskFinished(const V8StackTraceId& parent) = 0;
381
382 // Exceptions instrumentation.
384 v8::Local<v8::Value> exception,
385 StringView detailedMessage, StringView url,
386 unsigned lineNumber, unsigned columnNumber,
387 std::unique_ptr<V8StackTrace>,
388 int scriptId) = 0;
389 virtual void exceptionRevoked(v8::Local<v8::Context>, unsigned exceptionId,
390 StringView message) = 0;
392 v8::Local<v8::Value> exception,
394 v8::Local<v8::Value> value) = 0;
395
396 // Connection.
398 public:
399 virtual ~Channel() = default;
400 virtual void sendResponse(int callId,
401 std::unique_ptr<StringBuffer> message) = 0;
402 virtual void sendNotification(std::unique_ptr<StringBuffer> message) = 0;
403 virtual void flushProtocolNotifications() = 0;
404 };
405 enum ClientTrustLevel { kUntrusted, kFullyTrusted };
406 enum SessionPauseState { kWaitingForDebugger, kNotWaitingForDebugger };
407 // TODO(chromium:1352175): remove default value once downstream change lands.
408 virtual std::unique_ptr<V8InspectorSession> connect(
409 int contextGroupId, Channel*, StringView state,
410 ClientTrustLevel client_trust_level,
411 SessionPauseState = kNotWaitingForDebugger) {
412 return nullptr;
413 }
414
415 // API methods.
416 virtual std::unique_ptr<V8StackTrace> createStackTrace(
418 virtual std::unique_ptr<V8StackTrace> captureStackTrace(bool fullStack) = 0;
419};
420
421} // namespace v8_inspector
422
423#endif // V8_V8_INSPECTOR_H_
Definition: v8-isolate.h:261
MessageErrorLevel
Definition: v8-isolate.h:626
Definition: v8-local-handle.h:266
Definition: v8-local-handle.h:632
Definition: v8-inspector.h:77
virtual ~StringBuffer()=default
virtual StringView string() const =0
static std::unique_ptr< StringBuffer > create(StringView)
Definition: v8-inspector.h:50
const uint8_t * m_characters8
Definition: v8-inspector.h:72
size_t length() const
Definition: v8-inspector.h:61
StringView()
Definition: v8-inspector.h:52
const uint8_t * characters8() const
Definition: v8-inspector.h:65
const uint16_t * characters16() const
Definition: v8-inspector.h:66
StringView(const uint8_t *characters, size_t length)
Definition: v8-inspector.h:54
bool is8Bit() const
Definition: v8-inspector.h:60
StringView(const uint16_t *characters, size_t length)
Definition: v8-inspector.h:57
const uint16_t * m_characters16
Definition: v8-inspector.h:73
Definition: v8-inspector.h:85
v8::Local< v8::Context > context
Definition: v8-inspector.h:94
V8ContextInfo(const V8ContextInfo &)=delete
bool hasMemoryOnConsole
Definition: v8-inspector.h:100
StringView humanReadableName
Definition: v8-inspector.h:97
int contextGroupId
Definition: v8-inspector.h:96
V8ContextInfo & operator=(const V8ContextInfo &)=delete
static int executionContextId(v8::Local< v8::Context > context)
V8ContextInfo(v8::Local< v8::Context > context, int contextGroupId, StringView humanReadableName)
Definition: v8-inspector.h:87
StringView origin
Definition: v8-inspector.h:98
StringView auxData
Definition: v8-inspector.h:99
NotNullTagEnum
Definition: v8-inspector.h:105
Definition: v8-inspector.h:119
std::unique_ptr< StringBuffer > toString() const
std::pair< int64_t, int64_t > pair() const
V8DebuggerId(const V8DebuggerId &)=default
V8DebuggerId & operator=(const V8DebuggerId &)=default
Definition: v8-inspector.h:251
virtual void beginEnsureAllContextsInGroup(int contextGroupId)
Definition: v8-inspector.h:286
virtual void consoleClear(int contextGroupId)
Definition: v8-inspector.h:307
virtual bool isInspectableHeapObject(v8::Local< v8::Object >)
Definition: v8-inspector.h:280
virtual std::unique_ptr< StringBuffer > descriptionForValueSubtype(v8::Local< v8::Context >, v8::Local< v8::Value >)
Definition: v8-inspector.h:276
virtual void endUserGesture()
Definition: v8-inspector.h:266
virtual ~V8InspectorClient()=default
virtual void unmuteMetrics(int contextGroupId)
Definition: v8-inspector.h:263
virtual void startRepeatingTimer(double, TimerCallback, void *data)
Definition: v8-inspector.h:310
virtual void muteMetrics(int contextGroupId)
Definition: v8-inspector.h:262
virtual v8::Local< v8::Context > ensureDefaultContextInGroup(int contextGroupId)
Definition: v8-inspector.h:282
virtual void runIfWaitingForDebugger(int contextGroupId)
Definition: v8-inspector.h:260
virtual void consoleTimeStamp(v8::Isolate *isolate, v8::Local< v8::String > label)
Definition: v8-inspector.h:304
virtual void consoleTime(v8::Isolate *isolate, v8::Local< v8::String > label)
Definition: v8-inspector.h:301
virtual bool canExecuteScripts(int contextGroupId)
Definition: v8-inspector.h:315
virtual void dispatchError(v8::Local< v8::Context >, v8::Local< v8::Message >, v8::Local< v8::Value >)
Definition: v8-inspector.h:328
virtual void beginUserGesture()
Definition: v8-inspector.h:265
virtual void consoleTimeEnd(v8::Isolate *isolate, v8::Local< v8::String > label)
Definition: v8-inspector.h:302
virtual v8::MaybeLocal< v8::Value > memoryInfo(v8::Isolate *, v8::Local< v8::Context >)
Definition: v8-inspector.h:296
virtual std::unique_ptr< StringBuffer > valueSubtype(v8::Local< v8::Value >)
Definition: v8-inspector.h:273
virtual double currentTimeMS()
Definition: v8-inspector.h:308
virtual void consoleAPIMessage(int contextGroupId, v8::Isolate::MessageErrorLevel level, const StringView &message, const StringView &url, unsigned lineNumber, unsigned columnNumber, V8StackTrace *)
Definition: v8-inspector.h:291
virtual void installAdditionalCommandLineAPI(v8::Local< v8::Context >, v8::Local< v8::Object >)
Definition: v8-inspector.h:289
virtual std::unique_ptr< DeepSerializationResult > deepSerialize(v8::Local< v8::Value > v8Value, int maxDepth, v8::Local< v8::Object > additionalParameters)
Definition: v8-inspector.h:268
virtual int64_t generateUniqueId()
Definition: v8-inspector.h:326
virtual void runMessageLoopOnPause(int contextGroupId)
Definition: v8-inspector.h:255
virtual void runMessageLoopOnInstrumentationPause(int contextGroupId)
Definition: v8-inspector.h:256
virtual void quitMessageLoopOnPause()
Definition: v8-inspector.h:259
virtual std::unique_ptr< StringBuffer > resourceNameToUrl(const StringView &resourceName)
Definition: v8-inspector.h:319
virtual void cancelTimer(void *data)
Definition: v8-inspector.h:311
virtual void maxAsyncCallStackDepthChanged(int depth)
Definition: v8-inspector.h:317
virtual void endEnsureAllContextsInGroup(int contextGroupId)
Definition: v8-inspector.h:287
Definition: v8-inspector.h:171
virtual v8::Local< v8::Value > get(v8::Local< v8::Context >)=0
Definition: v8-inspector.h:166
virtual void releaseObjectGroup(StringView)=0
virtual std::vector< std::unique_ptr< protocol::Schema::API::Domain > > supportedDomains()=0
static bool canDispatchMethod(StringView method)
virtual bool unwrapObject(std::unique_ptr< StringBuffer > *error, StringView objectId, v8::Local< v8::Value > *, v8::Local< v8::Context > *, std::unique_ptr< StringBuffer > *objectGroup)=0
virtual void addInspectedObject(std::unique_ptr< Inspectable >)=0
virtual void breakProgram(StringView breakReason, StringView breakDetails)=0
virtual std::unique_ptr< protocol::Runtime::API::RemoteObject > wrapObject(v8::Local< v8::Context >, v8::Local< v8::Value >, StringView groupName, bool generatePreview)=0
virtual void triggerPreciseCoverageDeltaUpdate(StringView occasion)=0
virtual ~V8InspectorSession()=default
virtual void dispatchProtocolMessage(StringView message)=0
virtual std::vector< std::unique_ptr< protocol::Debugger::API::SearchMatch > > searchInTextByLines(StringView text, StringView query, bool caseSensitive, bool isRegex)=0
virtual void schedulePauseOnNextStatement(StringView breakReason, StringView breakDetails)=0
virtual void cancelPauseOnNextStatement()=0
virtual EvaluateResult evaluate(v8::Local< v8::Context > context, StringView expression, bool includeCommandLineAPI=false)=0
virtual void setSkipAllPauses(bool)=0
virtual std::vector< uint8_t > state()=0
virtual void resume(bool setTerminateOnResume=false)=0
Definition: v8-inspector.h:397
virtual void sendNotification(std::unique_ptr< StringBuffer > message)=0
virtual void flushProtocolNotifications()=0
virtual void sendResponse(int callId, std::unique_ptr< StringBuffer > message)=0
Definition: v8-inspector.h:354
virtual void externalAsyncTaskFinished(const V8StackTraceId &parent)=0
virtual void asyncTaskStarted(void *task)=0
static std::unique_ptr< V8Inspector > create(v8::Isolate *, V8InspectorClient *)
virtual unsigned exceptionThrown(v8::Local< v8::Context >, StringView message, v8::Local< v8::Value > exception, StringView detailedMessage, StringView url, unsigned lineNumber, unsigned columnNumber, std::unique_ptr< V8StackTrace >, int scriptId)=0
virtual void contextCreated(const V8ContextInfo &)=0
virtual void allAsyncTasksCanceled()=0
virtual ~V8Inspector()=default
virtual V8StackTraceId storeCurrentStackTrace(StringView description)=0
virtual void contextDestroyed(v8::Local< v8::Context >)=0
virtual v8::MaybeLocal< v8::Context > contextById(int contextId)=0
virtual std::unique_ptr< V8InspectorSession > connect(int contextGroupId, Channel *, StringView state, ClientTrustLevel client_trust_level, SessionPauseState=kNotWaitingForDebugger)
Definition: v8-inspector.h:408
virtual void idleFinished()=0
virtual bool associateExceptionData(v8::Local< v8::Context >, v8::Local< v8::Value > exception, v8::Local< v8::Name > key, v8::Local< v8::Value > value)=0
virtual void asyncTaskScheduled(StringView taskName, void *task, bool recurring)=0
virtual void idleStarted()=0
virtual void asyncTaskFinished(void *task)=0
SessionPauseState
Definition: v8-inspector.h:406
virtual void resetContextGroup(int contextGroupId)=0
virtual void exceptionRevoked(v8::Local< v8::Context >, unsigned exceptionId, StringView message)=0
virtual std::unique_ptr< V8StackTrace > captureStackTrace(bool fullStack)=0
ClientTrustLevel
Definition: v8-inspector.h:405
virtual void asyncTaskCanceled(void *task)=0
virtual V8DebuggerId uniqueDebuggerId(int contextId)=0
virtual std::unique_ptr< V8StackTrace > createStackTrace(v8::Local< v8::StackTrace >)=0
virtual void externalAsyncTaskStarted(const V8StackTraceId &parent)=0
Definition: v8-inspector.h:145
virtual StringView topFunctionName() const =0
virtual std::unique_ptr< V8StackTrace > clone()=0
virtual int topLineNumber() const =0
virtual StringView firstNonEmptySourceURL() const =0
virtual std::unique_ptr< protocol::Runtime::API::StackTrace > buildInspectorObject(int maxAsyncDepth) const =0
virtual StringView topSourceURL() const =0
virtual std::unique_ptr< StringBuffer > toString() const =0
virtual int topColumnNumber() const =0
virtual bool isEmpty() const =0
virtual ~V8StackTrace()=default
virtual int topScriptId() const =0
virtual std::vector< V8StackFrame > frames() const =0
Definition: v8-inspector.h:24
Definition: libplatform.h:15
Definition: v8-inspector.h:238
std::unique_ptr< DeepSerializedValue > serializedValue
Definition: v8-inspector.h:246
bool isSuccess
Definition: v8-inspector.h:248
std::unique_ptr< StringBuffer > errorMessage
Definition: v8-inspector.h:247
DeepSerializationResult(std::unique_ptr< DeepSerializedValue > serializedValue)
Definition: v8-inspector.h:239
DeepSerializationResult(std::unique_ptr< StringBuffer > errorMessage)
Definition: v8-inspector.h:242
Definition: v8-inspector.h:230
DeepSerializedValue(std::unique_ptr< StringBuffer > type, v8::MaybeLocal< v8::Value > value={})
Definition: v8-inspector.h:231
std::unique_ptr< StringBuffer > type
Definition: v8-inspector.h:234
v8::MaybeLocal< v8::Value > value
Definition: v8-inspector.h:235
v8::Local< v8::Value > value
Definition: v8-inspector.h:218
ResultType
Definition: v8-inspector.h:211
ResultType type
Definition: v8-inspector.h:217
Definition: v8-inspector.h:137
int scriptId
Definition: v8-inspector.h:142
StringView functionName
Definition: v8-inspector.h:139
int columnNumber
Definition: v8-inspector.h:141
StringView sourceURL
Definition: v8-inspector.h:138
int lineNumber
Definition: v8-inspector.h:140
Definition: v8-inspector.h:335
V8StackTraceId & operator=(const V8StackTraceId &)=default
V8StackTraceId(uintptr_t id, const std::pair< int64_t, int64_t > debugger_id)
V8StackTraceId(const V8StackTraceId &)=default
V8StackTraceId & operator=(V8StackTraceId &&) noexcept=default
V8StackTraceId(uintptr_t id, const std::pair< int64_t, int64_t > debugger_id, bool should_pause)
std::pair< int64_t, int64_t > debugger_id
Definition: v8-inspector.h:337
uintptr_t id
Definition: v8-inspector.h:336
#define V8_EXPORT
Definition: v8config.h:793