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

Unified Diff: experimental/linux_debug_server/debugger/core/debuggee_process.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/linux_debug_server/debugger/core/debuggee_process.cc
diff --git a/experimental/linux_debug_server/debugger/core/debuggee_process.cc b/experimental/linux_debug_server/debugger/core/debuggee_process.cc
deleted file mode 100755
index de516966a411049f83ae3f471f6ce45e03eeb7fd..0000000000000000000000000000000000000000
--- a/experimental/linux_debug_server/debugger/core/debuggee_process.cc
+++ /dev/null
@@ -1,170 +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 <signal.h>
-#include <stdio.h>
-#include <algorithm>
-#include "debugger/base/debug_command_line.h"
-#include "debugger/core/debuggee_process.h"
-#include "debugger/core/debuggee_thread.h"
-
-namespace {
-const int kWatForAllThreadsToStopSecs = 3;
-void delete_obj(debug::DebuggeeThread* obj) { delete obj; }
-} // namespace
-
-namespace debug {
-
-DebuggeeProcess::DebuggeeProcess (DebugAPI* debug_api)
- : debug_api_(*debug_api),
- nexe_mem_base_(0),
- stopping_treads_(false),
- is_first_event_(true) {
-}
-
-DebuggeeProcess::~DebuggeeProcess() {
- std::for_each(threads_.begin(), threads_.end(), delete_obj);
- threads_.clear();
-}
-
-DebuggeeThread* DebuggeeProcess::GetThread(int tid) {
- ThreadConstIter it = threads_.begin();
- while (it != threads_.end()) {
- DebuggeeThread* thread = *it;
- if (tid == thread->id())
- return thread;
- ++it;
- }
- return NULL;
-}
-
-void DebuggeeProcess::GetThreadsIds(std::deque<int>* threads) const {
- threads->clear();
- ThreadConstIter it = threads_.begin();
- while (it != threads_.end()) {
- threads->push_back((*it)->id());
- ++it;
- }
-}
-
-bool DebuggeeProcess::WaitForDebugEventAndDispatchIt(DebugEvent* debug_event) {
- while (debug_api_.WaitForDebugEvent(debug_event)) {
- if (is_first_event_) {
- is_first_event_ = false;
- debug_api_.SetupProc(debug_event->pid_); // Make it trace all children.
- }
- if (OnDebugEvent(*debug_event))
- return true;
- }
- return false;
-}
-
-
-bool DebuggeeProcess::OnDebugEvent(const DebugEvent& debug_event) {
- DebuggeeThread* thread = GetThread(debug_event.pid_);
- if (NULL == thread) {
- // Check if it's 'OUTPUT_DEBUG_STRING' event
- std::string str;
- if (debug_api_.ReadDebugString(debug_event, &str)) {
- // parse it
- CommandLine debug_info(str);
- std::string event = debug_info.GetStringSwitch("-event", "");
- if ("AppCreate" == event) {
- void* mem_base = debug_info.GetAddrSwitch("-mem_start");
- nexe_mem_base_ = reinterpret_cast<uint64_t>(mem_base);
- void* user_entry_point = debug_info.GetAddrSwitch("-user_entry_pt");
- printf("TR03.03: NaClAppCreate mem_base=%p entry_point=%p",
- mem_base,
- user_entry_point);
- } else if ("ThreadCreate" == event) {
- thread = new DebuggeeThread(debug_event.pid_, &debug_api_);
- threads_.push_back(thread);
- }
- }
- }
- if (NULL == thread) {
- // it's not NaClApp thread, and we ignore them
- DebuggeeThread thr(debug_event.pid_, &debug_api_);
- thr.OnDebugEvent(debug_event);
- thr.Continue();
- return false;
- }
-
- // It's a known NaClApp thread.
- // So, what we need to do:
- // 1) change the thread state
- // 2) stop all other threads
- thread->OnDebugEvent(debug_event);
- if (thread->state() != PROCESS_STOPPED) // thread is deed
- DeleteThread(debug_event.pid_);
- else
- StopAllThreads();
- return true;
-}
-
-void DebuggeeProcess::StopAllThreads() {
- if (stopping_treads_)
- return;
- stopping_treads_ = true;
- ThreadConstIter it = threads_.begin();
- while (it != threads_.end()) {
- DebuggeeThread* thread = *it;
- if (thread->state() == RUNNING)
- debug_api_.PostSignal(thread->id(), SIGSTOP);
- ++it;
- }
- // Wait till all threads stops.
- time_t end = time(0) + kWatForAllThreadsToStopSecs;
- do {
- if (AllThreadStopped())
- break;
- DebugEvent debug_event;
- while (debug_api_.WaitForDebugEvent(&debug_event))
- OnDebugEvent(debug_event);
-
- } while(time(0) < end);
-
- if (!AllThreadStopped())
- printf("Warning: not all threads stopped.\n");
-
- stopping_treads_ = false;
-}
-
-bool DebuggeeProcess::AllThreadStopped() {
- ThreadConstIter it = threads_.begin();
- while (it != threads_.end()) {
- if ((*it)->state() == RUNNING)
- return false;
- ++it;
- }
- return true;
-}
-
-void DebuggeeProcess::Continue(int tid) {
- DebuggeeThread* thread = GetThread(tid);
- if (NULL != thread)
- thread->Continue();
-
- ThreadConstIter it = threads_.begin();
- while (it != threads_.end()) {
- (*it)->Continue();
- ++it;
- }
-}
-
-void DebuggeeProcess::DeleteThread(int tid) {
- ThreadIter it = threads_.begin();
- while (it != threads_.end()) {
- DebuggeeThread* thread = *it;
- if (tid == thread->id()) {
- delete thread;
- threads_.erase(it);
- break;
- }
- ++it;
- }
-}
-
-} // namespace debug
-

Powered by Google App Engine
This is Rietveld 408576698