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

Unified Diff: experimental/windows_debugger/debugger/core/debug_execution_engine.cc

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/debug_execution_engine.cc
diff --git a/experimental/windows_debugger/debugger/core/debug_execution_engine.cc b/experimental/windows_debugger/debugger/core/debug_execution_engine.cc
deleted file mode 100644
index 93d9a73945ad535fa135d7a2955cfe093468adfb..0000000000000000000000000000000000000000
--- a/experimental/windows_debugger/debugger/core/debug_execution_engine.cc
+++ /dev/null
@@ -1,168 +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.
-#include "debugger/core/debug_api.h"
-#include <algorithm>
-#include "debugger/core/debug_execution_engine.h"
-#include "debugger/core/debug_logger.h"
-#include "debugger/core/debuggee_process.h"
-
-namespace {
-/// Timeout for exiting processes. If nothing happens for
-/// kWaitOnExitMs milliseconds, ExecutionEngine quits waiting
-/// for debug events.
-int kWaitOnExitMs = 300;
-
-bool not_dead_proc(debug::IDebuggeeProcess* proc) {
- return debug::IDebuggeeProcess::kDead != proc->state();
-}
-void delete_proc(debug::IDebuggeeProcess* proc) { delete proc; }
-void detach_proc(debug::IDebuggeeProcess* proc) {
- proc->Detach();
-}
-void kill_proc(debug::IDebuggeeProcess* proc) {
- proc->Kill();
-}
-} // namespace
-
-namespace debug {
-
-ExecutionEngine::ExecutionEngine(DebugAPI* debug_api)
- : debug_api_(*debug_api) {
-}
-
-ExecutionEngine::~ExecutionEngine() {
- Stop(kWaitOnExitMs);
- std::for_each(processes_.begin(), processes_.end(), delete_proc);
- processes_.clear();
-}
-
-IDebuggeeProcess* ExecutionEngine::CreateDebuggeeProcess(int pid,
- HANDLE handle,
- HANDLE file_handle) {
- return new DebuggeeProcess(pid, handle, file_handle, &debug_api_);
-}
-
-bool ExecutionEngine::StartProcess(const char* cmd, const char* work_dir) {
- STARTUPINFO si;
- memset(&si, 0, sizeof(si));
- si.cb = sizeof(si);
- PROCESS_INFORMATION pi;
- memset(&pi, 0, sizeof(pi));
-
- char* cmd_dup = _strdup(cmd);
- if (NULL == cmd_dup) {
- DBG_LOG("TR01.00", "Memory allocation error.");
- return false;
- }
- BOOL res = debug_api_.CreateProcess(NULL,
- cmd_dup,
- NULL,
- NULL,
- FALSE,
- DEBUG_PROCESS | CREATE_NEW_CONSOLE,
- NULL,
- work_dir,
- &si,
- &pi);
- free(cmd_dup);
- if (!res)
- return false;
-
- debug_api_.CloseHandle(pi.hThread);
- debug_api_.CloseHandle(pi.hProcess);
- return true;
-}
-
-bool ExecutionEngine::AttachToProcess(int pid) {
- return (TRUE == debug_api_.DebugActiveProcess(pid)) ? true : false;
-}
-
-void ExecutionEngine::DetachAll() {
- std::for_each(processes_.begin(), processes_.end(), detach_proc);
- std::for_each(processes_.begin(), processes_.end(), delete_proc);
- processes_.clear();
-}
-
-IDebuggeeProcess* ExecutionEngine::GetProcess(int pid) {
- ProcessConstIter it = processes_.begin();
- while (it != processes_.end()) {
- IDebuggeeProcess* proc = *it;
- ++it;
- if (pid == proc->id())
- return proc;
- }
- return NULL;
-}
-
-void ExecutionEngine::GetProcessIds(std::deque<int>* processes) const {
- processes->clear();
- ProcessConstIter it = processes_.begin();
- while (it != processes_.end()) {
- processes->push_back((*it)->id());
- ++it;
- }
-}
-
-void ExecutionEngine::RemoveDeadProcesses() {
- ProcessIter it = std::partition(processes_.begin(),
- processes_.end(),
- not_dead_proc);
- std::for_each(it, processes_.end(), delete_proc);
- processes_.erase(it, processes_.end());
-}
-
-bool ExecutionEngine::WaitForDebugEventAndDispatchIt(int wait_ms,
- int* halted_pid) {
- RemoveDeadProcesses();
- DEBUG_EVENT de;
- if (debug_api_.WaitForDebugEvent(&de, wait_ms)) {
- int pid = OnDebugEvent(de);
- if (NULL != halted_pid)
- *halted_pid = pid;
- return true;
- }
- return false;
-}
-
-int ExecutionEngine::OnDebugEvent(const DEBUG_EVENT& debug_event) {
- debug_event_.set_windows_debug_event(debug_event);
- debug_event_.set_nacl_debug_event_code(DebugEvent::kNotNaClDebugEvent);
-
- IDebuggeeProcess* process = GetProcess(debug_event.dwProcessId);
-
- if (CREATE_PROCESS_DEBUG_EVENT == debug_event.dwDebugEventCode) {
- process = CreateDebuggeeProcess(debug_event.dwProcessId,
- debug_event.u.CreateProcessInfo.hProcess,
- debug_event.u.CreateProcessInfo.hFile);
- if (NULL != process)
- processes_.push_back(process);
- }
-
- char tmp[1000];
- debug_event_.ToString(tmp, sizeof(tmp));
- DBG_LOG("TR01.01", "msg='ExecutionEngine::OnDebugEvent' event='%s'", tmp);
-
- if (NULL != process) {
- process->OnDebugEvent(&debug_event_);
- if (process->IsHalted())
- return process->id();
- }
- return 0;
-}
-
-void ExecutionEngine::Stop(int wait_ms) {
- std::for_each(processes_.begin(), processes_.end(), kill_proc);
- while (processes_.size() > 0) {
- int halted_pid = 0;
- WaitForDebugEventAndDispatchIt(wait_ms, &halted_pid);
- if (0 != halted_pid) {
- IDebuggeeProcess* proc = GetProcess(halted_pid);
- proc->ContinueAndPassExceptionToDebuggee();
- } else {
- break; // Timed-out, stop waiting for processes to shut down.
- }
- }
-}
-} // namespace debug
-

Powered by Google App Engine
This is Rietveld 408576698