Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(726)

Unified Diff: experimental/windows_debugger/debugger/core/debuggee_thread.h

Issue 10928195: First round of dead file removal (Closed) Base URL: https://github.com/samclegg/nativeclient-sdk.git@master
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: experimental/windows_debugger/debugger/core/debuggee_thread.h
diff --git a/experimental/windows_debugger/debugger/core/debuggee_thread.h b/experimental/windows_debugger/debugger/core/debuggee_thread.h
deleted file mode 100644
index dfe3e751ad89c5a0d9738cb5e92e827492eaf1ea..0000000000000000000000000000000000000000
--- a/experimental/windows_debugger/debugger/core/debuggee_thread.h
+++ /dev/null
@@ -1,177 +0,0 @@
-// Copyright (c) 2011 The Native Client 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 DEBUGGER_CORE_DEBUGGEE_THREAD_H_
-#define DEBUGGER_CORE_DEBUGGEE_THREAD_H_
-
-#include <windows.h>
-#include "debugger/core/debug_breakpoint.h"
-
-namespace debug {
-class IDebuggeeProcess;
-class DebugAPI;
-class DebugEvent;
-class Breakpoint;
-
-/// This class represents a thread in the debugged process.
-
-/// Each thread belongs to one DebuggeeProcess.
-///
-/// Class diagram (and more) is here:
-/// https://docs.google.com/a/google.com/document/d/1lTN-IYqDd_oy9XQg9-zlNc_vbg-qyr4q2MKNEjhSA84/edit?hl=en&authkey=CJyJlOgF#
-///
-/// Note: most methods shall be called from one thread, this is limitation
-/// of Windows debug API, here's links to Microsoft documentation:
-/// http://msdn.microsoft.com/en-us/library/ms681423%28v=VS.85%29.aspx
-/// http://msdn.microsoft.com/en-us/library/ms681675%28v=vs.85%29.aspx
-/// Simple accessors can be called from any thread.
-///
-/// Note: not thread-safe.
-class DebuggeeThread {
- public:
- enum State {
- kRunning = 1, // thread is alive, event loop is running
- kHalted, // thread is alive, event loop is not running
- kContinueFromBreakpoint, // thread is single stepping from breakpoint
- kDead // thread is deleted by OS, user can only call |return_code()|,
- // |id()|, |state()| methods.
- };
- /// Describes a parameter type for |Continue| method.
- enum ContinueOption {
- kSingleStep,
- kContinue,
- kContinueAndPassException
- };
-
- /// Creates a DebuggeeThread object with specified thread |id|,
- /// thread |handle| and |parent_process|. There's no need to close
- /// |handle|, system will close handle when thread terminates.
- /// |parent_process| shall not be NULL.
- DebuggeeThread(int id, HANDLE handle, IDebuggeeProcess* parent_process);
-
- int id() const { return id_; }
- HANDLE handle() const { return handle_; }
- State state() const { return state_; }
-
- /// Shall be called only on dead threads (i.e. state_ == kDead).
- /// @return exit code or exception number, if thread is terminated
- /// by exception.
- int return_code() const { return exit_code_; }
-
- /// @return true if this thread created to run nexe code.
- bool IsNaClAppThread() const { return is_nacl_app_thread_; }
-
- /// Used for debugging debugger.
- /// @param[in] state
- /// @return name of the state
- static const char* GetStateName(State state);
-
- /// Used for debugging debugger.
- /// @param[in] continue option
- /// @return name of the option
- static const char* GetContinueOptionName(ContinueOption option);
-
- /// @return true if thread is in kHalted state
- /// Halted thread is the one that caused the process to halt.
- /// Note: only one thread can be halted in one process.
- bool IsHalted() const;
-
- /// Reads registers of the thread.
- /// Note that CONTEXT structure is defined differently
- /// on 32-bit and 64-bit windows.
- /// Shall be called only on halted process.
- /// @return true if operation was successful.
- bool GetContext(CONTEXT* context);
-
- /// Writes registers of the thread.
- /// Shall be called only on halted process.
- /// @return true if operation was successful.
- bool SetContext(const CONTEXT& context);
-
- /// Reads registers of the WoW thread.
- /// It should be used to work with WoW (windows-on-windows)
- /// processes - i.e. 32-bit processes running on 64-bit windows.
- /// Shall be called only on halted process.
- /// @return true if operation was successful.
- bool GetWowContext(WOW64_CONTEXT* context);
-
- /// Writes registers of the WoW thread.
- /// It should be used to work with WoW (windows-on-windows)
- /// processes - i.e. 32-bit processes running on 64-bit windows.
- /// Shall be called only on halted process.
- /// @return true if operation was successful.
- bool SetWowContext(const WOW64_CONTEXT& context);
-
- /// Reads IP (instruction pointer).
- /// Shall be called only on halted process.
- /// @return value of EIP (for 32-bit process) or RIP (for 64-bit process).
- void* GetIP();
-
- /// Writes IP.
- /// Shall be called only on halted process.
- /// Writes EIP (for 32-bit process) or RIP (for 64-bit process).
- bool SetIP(void* ip);
-
- protected:
- friend class DebuggeeProcess;
-
- /// @return parent process.
- IDebuggeeProcess& parent_process() { return parent_process_; }
- const IDebuggeeProcess& parent_process() const { return parent_process_; }
- DebugAPI& debug_api();
-
- /// Allows thread execution to continue (i.e. it calls
- /// ContinueDebugEvent()).
- /// If |option| is kContinueAndPassException, and thread was halted due
- /// to exception, that exception is passed to the debuggee thread.
- bool Continue(ContinueOption option);
-
- /// Handler of debug events. DebuggeeThread has a FSM (finite state machine),
- /// and |debug_event| is an only event consumed by FSM.
- /// @param[in] debug_event debug event received from debuggee process
- void OnDebugEvent(DebugEvent* debug_event);
-
- /// Terminates thread.
- void Kill();
-
- /// Changes internal state to |new_state|.
- void SetState(State new_state);
-
- /// Changes a 'Trace' flag in CPUs EFlags register.
- /// @param[in] enable single step
- void EnableSingleStep(bool enable);
-
- /// Handler for OUTPUT_DEBUG_STRING_EVENT.
- /// @param[in] debug_event debug event received from debuggee process
- void OnOutputDebugString(DebugEvent* debug_event);
-
- /// Handler for EXCEPTION_DEBUG_EVENT.EXCEPTION_kBreakPOINT
- /// @param[in] debug_event debug event received from debuggee process
- void OnBreakpoint(DebugEvent* debug_event);
-
- /// Handler for EXCEPTION_DEBUG_EVENT.EXCEPTION_SINGLE_kStep
- /// @param[in] debug_event debug event received from debuggee process
- void OnSingleStep(DebugEvent* debug_event);
-
- /// Resumes execution of the halted thread, asuming breapoint was triggered.
- bool ContinueFromBreakpoint();
-
- private:
- int id_;
- HANDLE handle_;
- IDebuggeeProcess& parent_process_;
- State state_;
- int exit_code_;
-
- /// Current breakpoint, if any. NULL if thread did not hit breakpoint.
- void* triggered_breakpoint_addr_;
-
- // Stuff related only to nexe threads.
- bool is_nacl_app_thread_;
-
- DebuggeeThread(const DebuggeeThread&); // DISALLOW_COPY_AND_ASSIGN
- void operator=(const DebuggeeThread&);
-};
-} // namespace debug
-#endif // DEBUGGER_CORE_DEBUGGEE_THREAD_H_
-

Powered by Google App Engine
This is Rietveld 408576698