File: debug-callbacks.h

package info (click to toggle)
chromium 139.0.7258.127-2
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 6,122,156 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (93 lines) | stat: -rw-r--r-- 3,592 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// 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.

#ifndef V8_TOOLS_V8WINDBG_TEST_DEBUG_CALLBACKS_H_
#define V8_TOOLS_V8WINDBG_TEST_DEBUG_CALLBACKS_H_

#if !defined(UNICODE) || !defined(_UNICODE)
#error Unicode not defined
#endif

// Must be included before DbgModel.h.
#include <new>

#include <DbgEng.h>
#include <DbgModel.h>
#include <Windows.h>
#include <crtdbg.h>
#include <pathcch.h>
#include <wrl/client.h>

#include <string>

namespace WRL = Microsoft::WRL;

namespace v8 {
namespace internal {
namespace v8windbg_test {

class MyOutput : public IDebugOutputCallbacks {
 public:
  MyOutput(WRL::ComPtr<IDebugClient5> p_client);
  ~MyOutput();
  MyOutput(const MyOutput&) = delete;
  MyOutput& operator=(const MyOutput&) = delete;

  // Inherited via IDebugOutputCallbacks
  HRESULT __stdcall QueryInterface(REFIID InterfaceId,
                                   PVOID* Interface) override;
  ULONG __stdcall AddRef(void) override;
  ULONG __stdcall Release(void) override;
  HRESULT __stdcall Output(ULONG Mask, PCSTR Text) override;

  const std::string& GetLog() const { return log_; }
  void ClearLog() { log_.clear(); }

 private:
  WRL::ComPtr<IDebugClient5> p_client_;
  std::string log_;
};

// For return values, see:
// https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debug-status-xxx
class MyCallback : public IDebugEventCallbacks {
 public:
  // Inherited via IDebugEventCallbacks
  HRESULT __stdcall QueryInterface(REFIID InterfaceId,
                                   PVOID* Interface) override;
  ULONG __stdcall AddRef(void) override;
  ULONG __stdcall Release(void) override;
  HRESULT __stdcall GetInterestMask(PULONG Mask) override;
  HRESULT __stdcall Breakpoint(PDEBUG_BREAKPOINT Bp) override;
  HRESULT __stdcall Exception(PEXCEPTION_RECORD64 Exception,
                              ULONG FirstChance) override;
  HRESULT __stdcall CreateThread(ULONG64 Handle, ULONG64 DataOffset,
                                 ULONG64 StartOffset) override;
  HRESULT __stdcall ExitThread(ULONG ExitCode) override;
  HRESULT __stdcall ExitProcess(ULONG ExitCode) override;
  HRESULT __stdcall LoadModule(ULONG64 ImageFileHandle, ULONG64 BaseOffset,
                               ULONG ModuleSize, PCSTR ModuleName,
                               PCSTR ImageName, ULONG CheckSum,
                               ULONG TimeDateStamp) override;
  HRESULT __stdcall UnloadModule(PCSTR ImageBaseName,
                                 ULONG64 BaseOffset) override;
  HRESULT __stdcall SystemError(ULONG Error, ULONG Level) override;
  HRESULT __stdcall SessionStatus(ULONG Status) override;
  HRESULT __stdcall ChangeDebuggeeState(ULONG Flags, ULONG64 Argument) override;
  HRESULT __stdcall ChangeEngineState(ULONG Flags, ULONG64 Argument) override;
  HRESULT __stdcall ChangeSymbolState(ULONG Flags, ULONG64 Argument) override;
  HRESULT __stdcall CreateProcessW(ULONG64 ImageFileHandle, ULONG64 Handle,
                                   ULONG64 BaseOffset, ULONG ModuleSize,
                                   PCSTR ModuleName, PCSTR ImageName,
                                   ULONG CheckSum, ULONG TimeDateStamp,
                                   ULONG64 InitialThreadHandle,
                                   ULONG64 ThreadDataOffset,
                                   ULONG64 StartOffset) override;
};

}  // namespace v8windbg_test
}  // namespace internal
}  // namespace v8

#endif  // V8_TOOLS_V8WINDBG_TEST_DEBUG_CALLBACKS_H_