summaryrefslogtreecommitdiff
path: root/deps/v8/tools/v8windbg/test/debug-callbacks.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/tools/v8windbg/test/debug-callbacks.cc')
-rw-r--r--deps/v8/tools/v8windbg/test/debug-callbacks.cc94
1 files changed, 94 insertions, 0 deletions
diff --git a/deps/v8/tools/v8windbg/test/debug-callbacks.cc b/deps/v8/tools/v8windbg/test/debug-callbacks.cc
new file mode 100644
index 0000000000..0b11195bdb
--- /dev/null
+++ b/deps/v8/tools/v8windbg/test/debug-callbacks.cc
@@ -0,0 +1,94 @@
+// Copyright 2020 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "tools/v8windbg/test/debug-callbacks.h"
+
+namespace v8 {
+namespace internal {
+namespace v8windbg_test {
+
+MyOutput::MyOutput(WRL::ComPtr<IDebugClient5> p_client) : p_client_(p_client) {
+ p_client_->SetOutputCallbacks(this);
+}
+
+MyOutput::~MyOutput() { p_client_->SetOutputCallbacks(nullptr); }
+
+HRESULT __stdcall MyOutput::QueryInterface(REFIID InterfaceId,
+ PVOID* Interface) {
+ return E_NOTIMPL;
+}
+ULONG __stdcall MyOutput::AddRef(void) { return 0; }
+ULONG __stdcall MyOutput::Release(void) { return 0; }
+HRESULT __stdcall MyOutput::Output(ULONG Mask, PCSTR Text) {
+ if (Mask & DEBUG_OUTPUT_NORMAL) {
+ log_ += Text;
+ }
+ return S_OK;
+}
+
+HRESULT __stdcall MyCallback::QueryInterface(REFIID InterfaceId,
+ PVOID* Interface) {
+ return E_NOTIMPL;
+}
+ULONG __stdcall MyCallback::AddRef(void) { return S_OK; }
+ULONG __stdcall MyCallback::Release(void) { return S_OK; }
+HRESULT __stdcall MyCallback::GetInterestMask(PULONG Mask) {
+ *Mask = DEBUG_EVENT_BREAKPOINT | DEBUG_EVENT_CREATE_PROCESS;
+ return S_OK;
+}
+HRESULT __stdcall MyCallback::Breakpoint(PDEBUG_BREAKPOINT Bp) {
+ ULONG64 bp_offset;
+ HRESULT hr = Bp->GetOffset(&bp_offset);
+ if (FAILED(hr)) return hr;
+
+ // Break on breakpoints? Seems reasonable.
+ return DEBUG_STATUS_BREAK;
+}
+HRESULT __stdcall MyCallback::Exception(PEXCEPTION_RECORD64 Exception,
+ ULONG FirstChance) {
+ return E_NOTIMPL;
+}
+HRESULT __stdcall MyCallback::CreateThread(ULONG64 Handle, ULONG64 DataOffset,
+ ULONG64 StartOffset) {
+ return E_NOTIMPL;
+}
+HRESULT __stdcall MyCallback::ExitThread(ULONG ExitCode) { return E_NOTIMPL; }
+HRESULT __stdcall MyCallback::ExitProcess(ULONG ExitCode) { return E_NOTIMPL; }
+HRESULT __stdcall MyCallback::LoadModule(ULONG64 ImageFileHandle,
+ ULONG64 BaseOffset, ULONG ModuleSize,
+ PCSTR ModuleName, PCSTR ImageName,
+ ULONG CheckSum, ULONG TimeDateStamp) {
+ return E_NOTIMPL;
+}
+HRESULT __stdcall MyCallback::UnloadModule(PCSTR ImageBaseName,
+ ULONG64 BaseOffset) {
+ return E_NOTIMPL;
+}
+HRESULT __stdcall MyCallback::SystemError(ULONG Error, ULONG Level) {
+ return E_NOTIMPL;
+}
+HRESULT __stdcall MyCallback::SessionStatus(ULONG Status) { return E_NOTIMPL; }
+HRESULT __stdcall MyCallback::ChangeDebuggeeState(ULONG Flags,
+ ULONG64 Argument) {
+ return E_NOTIMPL;
+}
+HRESULT __stdcall MyCallback::ChangeEngineState(ULONG Flags, ULONG64 Argument) {
+ return E_NOTIMPL;
+}
+HRESULT __stdcall MyCallback::ChangeSymbolState(ULONG Flags, ULONG64 Argument) {
+ return E_NOTIMPL;
+}
+HRESULT __stdcall MyCallback::CreateProcessW(
+ ULONG64 ImageFileHandle, ULONG64 Handle, ULONG64 BaseOffset,
+ ULONG ModuleSize, PCSTR ModuleName, PCSTR ImageName, ULONG CheckSum,
+ ULONG TimeDateStamp, ULONG64 InitialThreadHandle, ULONG64 ThreadDataOffset,
+ ULONG64 StartOffset) {
+ // Should fire once the target process is launched. Break to create
+ // breakpoints, etc.
+ return DEBUG_STATUS_BREAK;
+}
+
+} // namespace v8windbg_test
+} // namespace internal
+} // namespace v8