mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 00:13:50 +00:00
![Ryan Macnak](/assets/img/avatar_default.png)
Change-Id: I13779b9a4878f84aa3995043a99fab9253e8e093 Reviewed-on: https://dart-review.googlesource.com/c/85641 Reviewed-by: Siva Annamalai <asiva@google.com> Commit-Queue: Ryan Macnak <rmacnak@google.com>
185 lines
6.1 KiB
C
185 lines
6.1 KiB
C
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
#ifndef RUNTIME_VM_DEBUGGER_API_IMPL_TEST_H_
|
|
#define RUNTIME_VM_DEBUGGER_API_IMPL_TEST_H_
|
|
|
|
#include "include/dart_api.h"
|
|
#include "vm/debugger.h"
|
|
|
|
typedef struct _Dart_Breakpoint* Dart_Breakpoint;
|
|
|
|
typedef struct _Dart_StackTrace* Dart_StackTrace;
|
|
|
|
typedef struct _Dart_ActivationFrame* Dart_ActivationFrame;
|
|
|
|
/**
|
|
* An id used to uniquely represent an Isolate in the debugger wire protocol
|
|
* messages.
|
|
*/
|
|
typedef Dart_Port Dart_IsolateId;
|
|
|
|
/**
|
|
* ILLEGAL_ISOLATE_ID is a number guaranteed never to be associated with a
|
|
* valid isolate.
|
|
*/
|
|
#define ILLEGAL_ISOLATE_ID ILLEGAL_PORT
|
|
|
|
/**
|
|
* Null value for breakpoint id. Guaranteed never to be associated
|
|
* with a valid breakpoint.
|
|
*/
|
|
#define ILLEGAL_BREAKPOINT_ID 0
|
|
|
|
typedef void Dart_ExceptionThrownHandler(Dart_IsolateId isolate_id,
|
|
Dart_Handle exception_object,
|
|
Dart_StackTrace stack_trace);
|
|
|
|
typedef enum {
|
|
kCreated = 0,
|
|
kInterrupted,
|
|
kShutdown,
|
|
} Dart_IsolateEvent;
|
|
|
|
/**
|
|
* Represents a location in Dart code.
|
|
*/
|
|
typedef struct {
|
|
Dart_Handle script_url; // Url (string) of the script.
|
|
int32_t library_id; // Library in which the script is loaded.
|
|
int32_t token_pos; // Code address.
|
|
} Dart_CodeLocation;
|
|
|
|
typedef void Dart_IsolateEventHandler(Dart_IsolateId isolate_id,
|
|
Dart_IsolateEvent kind);
|
|
|
|
typedef void Dart_PausedEventHandler(Dart_IsolateId isolate_id,
|
|
intptr_t bp_id,
|
|
const Dart_CodeLocation& location);
|
|
|
|
typedef void Dart_BreakpointResolvedHandler(Dart_IsolateId isolate_id,
|
|
intptr_t bp_id,
|
|
const Dart_CodeLocation& location);
|
|
|
|
/**
|
|
* Returns true if the debugger can step into code of the given library.
|
|
*
|
|
* Requires there to be a current isolate.
|
|
*
|
|
* \return A handle to the True object if no error occurs.
|
|
*/
|
|
DART_EXPORT Dart_Handle Dart_GetLibraryDebuggable(intptr_t library_id,
|
|
bool* is_debuggable);
|
|
|
|
/**
|
|
* Requets that debugging be enabled for the given library.
|
|
*
|
|
* Requires there to be a current isolate.
|
|
*
|
|
* \return A handle to the True object if no error occurs.
|
|
*/
|
|
DART_EXPORT Dart_Handle Dart_SetLibraryDebuggable(intptr_t library_id,
|
|
bool is_debuggable);
|
|
|
|
/**
|
|
* Sets a breakpoint at line \line_number in \script_url, or the closest
|
|
* following line (within the same function) where a breakpoint can be set.
|
|
*
|
|
* Requires there to be a current isolate.
|
|
*
|
|
* \return A handle containing the breakpoint id, which is an integer
|
|
* value, or an error object if a breakpoint could not be set.
|
|
*/
|
|
DART_EXPORT Dart_Handle Dart_SetBreakpoint(Dart_Handle script_url,
|
|
intptr_t line_number);
|
|
|
|
/**
|
|
* Returns in \trace the current stack trace, or NULL if the
|
|
* VM is not paused.
|
|
*
|
|
* Requires there to be a current isolate.
|
|
*
|
|
* \return A valid handle if no error occurs during the operation.
|
|
*/
|
|
DART_EXPORT Dart_Handle Dart_GetStackTrace(Dart_StackTrace* trace);
|
|
|
|
/**
|
|
* Returns in \trace the stack trace associated with the error given in \handle.
|
|
*
|
|
* Requires there to be a current isolate.
|
|
*
|
|
* \return A valid handle if no error occurs during the operation.
|
|
*/
|
|
DART_EXPORT Dart_Handle Dart_GetStackTraceFromError(Dart_Handle error,
|
|
Dart_StackTrace* trace);
|
|
|
|
/**
|
|
* Returns in \length the number of activation frames in the given
|
|
* stack trace.
|
|
*
|
|
* Requires there to be a current isolate.
|
|
*
|
|
* \return A handle to the True object if no error occurs.
|
|
*/
|
|
DART_EXPORT Dart_Handle Dart_StackTraceLength(Dart_StackTrace trace,
|
|
intptr_t* length);
|
|
|
|
/**
|
|
* Returns in \frame the activation frame with index \frame_index.
|
|
* The activation frame at the top of stack has index 0.
|
|
*
|
|
* Requires there to be a current isolate.
|
|
*
|
|
* \return A handle to the True object if no error occurs.
|
|
*/
|
|
DART_EXPORT Dart_Handle Dart_GetActivationFrame(Dart_StackTrace trace,
|
|
int frame_index,
|
|
Dart_ActivationFrame* frame);
|
|
|
|
/**
|
|
* Returns information about the given activation frame.
|
|
* \function_name receives a string handle with the qualified
|
|
* function name.
|
|
* \script_url receives a string handle with the url of the
|
|
* source script that contains the frame's function.
|
|
* \line_number receives the line number in the script.
|
|
* \col_number receives the column number in the script, or -1 if column
|
|
* information is not available
|
|
*
|
|
* Any or all of the out parameters above may be NULL.
|
|
*
|
|
* Requires there to be a current isolate.
|
|
*
|
|
* \return A valid handle if no error occurs during the operation.
|
|
*/
|
|
DART_EXPORT Dart_Handle
|
|
Dart_ActivationFrameInfo(Dart_ActivationFrame activation_frame,
|
|
Dart_Handle* function_name,
|
|
Dart_Handle* script_url,
|
|
intptr_t* line_number,
|
|
intptr_t* column_number);
|
|
|
|
/**
|
|
* Execute the expression given in string \expr in the context
|
|
* of \lib_handle library, as if it were a top-level function in it.
|
|
*
|
|
* Requires there to be a current isolate.
|
|
*
|
|
* \return A handle to the computed value, or an error object if
|
|
* the compilation of the expression fails, or if the evaluation throws
|
|
* an error.
|
|
*/
|
|
DART_EXPORT Dart_Handle Dart_EvaluateStaticExpr(Dart_Handle lib_handle,
|
|
Dart_Handle expr);
|
|
|
|
/**
|
|
* Returns in \library_id the library id of the given \library.
|
|
*
|
|
* \return A valid handle if no error occurs during the operation.
|
|
*/
|
|
DART_EXPORT Dart_Handle Dart_LibraryId(Dart_Handle library,
|
|
intptr_t* library_id);
|
|
|
|
#endif // RUNTIME_VM_DEBUGGER_API_IMPL_TEST_H_
|