diff options
Diffstat (limited to 'deps/v8/tools/v8windbg/test/debug-callbacks.cc')
-rw-r--r-- | deps/v8/tools/v8windbg/test/debug-callbacks.cc | 94 |
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 |