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

Unified Diff: experimental/linux_oop_debugger/debugger.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
« no previous file with comments | « experimental/linux_oop_debugger/debug_blob.cc ('k') | experimental/mac_debugger/README » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: experimental/linux_oop_debugger/debugger.cc
diff --git a/experimental/linux_oop_debugger/debugger.cc b/experimental/linux_oop_debugger/debugger.cc
deleted file mode 100644
index 671bccc090643510d6d0bdea1c935757f1233dfb..0000000000000000000000000000000000000000
--- a/experimental/linux_oop_debugger/debugger.cc
+++ /dev/null
@@ -1,335 +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 <fcntl.h>
-#include <malloc.h>
-#include <pthread.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <termios.h>
-#include <unistd.h>
-
-#include <deque>
-#include <string>
-
-#include "debug_api_linux.h"
-#include "debug_blob.h"
-
-void* atoptr(const char* str) {
- void* ptr = 0;
- sscanf(str, "%p", &ptr); // NOLINT
- return ptr;
-}
-
-int kbhit() {
- termios oldt;
- tcgetattr(STDIN_FILENO, &oldt);
- termios newt = oldt;
- newt.c_lflag &= ~(ICANON | ECHO);
- tcsetattr(STDIN_FILENO, TCSANOW, &newt);
- int oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
- fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
-
- int ch = getchar();
-
- tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
- fcntl(STDIN_FILENO, F_SETFL, oldf);
-
- if (EOF != ch) {
- ungetc(ch, stdin);
- return 1;
- }
- return 0;
-}
-
-extern void Split(const char* str_in,
- const char* delimiters,
- std::deque<std::string>* out);
-
-void printList(const std::deque<std::string>& list) {
- printf("list {\n");
- size_t num = list.size();
- for (size_t i = 0; i < num; i++)
- printf("[%s]\n", list[i].c_str());
- printf("}\n");
-}
-
-
-int main(int argc, char *argv[]) {
- debug::DebugApi deb_api;
- pid_t child_pid = 0;
-
-#define CHROMEEE
-#ifdef CHROMEEE
-// const char* cmd_line = "/usr/local/google/garianov/chrome/src/out/Debug/chrome --no-sandbox --allow-sandbox-debugging --disable-seccomp-sandbox";
- const char* cmd_line = "/usr/local/google/garianov/chrome/src/out/Debug/chrome --incognito http://localhost:5103/hello_world_c/hello_world_c.html";
- printf("Starting [%s]\npress any key...", cmd_line);
- getchar();
- bool sp_res = deb_api.StartProcess(
- cmd_line,
- true,
- &child_pid);
-#else
- bool sp_res = deb_api.StartProcess(
- "/home/garianov/projects/debugger/a.out",
- true,
- &child_pid);
-#endif
-
- bool show_events = false; //true; //aaa
- int nacl_pid = 0;
- bool animate = false;
- FILE* file = fopen("anim.txt", "wt");
-
-#ifdef CHROMEEE
- static bool iterative = false;
-#else
- static bool iterative = true;
-#endif
-
- while (true) {
- if (kbhit()) {
- char buff[100] = { 0 };
- fgets(buff, sizeof(buff) -1, stdin);
-
- std::deque<std::string> words;
- Split(buff, " \t", &words);
- printList(words);
- if ((words[0] == "break") && (words.size() >= 2)) {
- int pid = atoi(words[1].c_str());
- bool res = deb_api.DebugBreak(pid);
- if (!res)
- printf("Error\n");
- continue;
- } else if (words[0] == "e-") {
- printf("show_events = false\n");
- show_events = false;
- continue;
- } else if (words[0] == "q") {
- break;
- }
- }
-
- debug::DebugEvent de;
- if (deb_api.WaitForDebugEvent(&de)) {
- //beg - test only
- //iterative = true;
- //nacl_pid = de.process_id_;
- //end - test only
-
- if (debug::DebugEvent::OUTPUT_DEBUG_STRING == de.event_code_) {
- iterative = true;
- nacl_pid = de.process_id_;
- printf("Got OUTPUT_DEBUG_STRING: ");
- std::string string;
- if (deb_api.ReadDebugString(&de, &string))
- printf("[%s]", string.c_str());
- printf("\n");
-// deb_api.ContinueDebugEvent(de.process_id_);
-// do_continue = true;
- } else if (de.signal_no_ == SIGTRAP) {
- // Checking for possible OUTPUT_DEBUG_STRING event
- char* rax = 0;
- deb_api.GetRax(de.process_id_, &rax);
-
- const char* key = "{7AA7C9CF-89EC-4ed3-8DAD-6DC84302AB11}";
- size_t key_len = strlen(key);
-
- size_t rd = 0;
- char buff[1024] = {0, 0};
- deb_api.ReadProcessMemory(de.process_id_, rax, buff, sizeof(buff), &rd);
- if (rd > 0) {
- buff[sizeof(buff) - 1] = 0;
- debug::Blob bb(buff, rd);
- printf("OUTPUT_DEBUG_STRING=[%s]\n", bb.ToString().c_str());
- }
-
- if ((memcmp(key, buff, key_len) ==0)) {
- iterative = true;
- nacl_pid = de.process_id_;
- printf("%s\n", "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Gotcha!=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>");
- }
- }
-
-
- if (show_events || (nacl_pid == de.process_id_))
- //|| (debug::DebugEvent::SINGLE_STEP_TRAP == de.event_code_))
-// int ppid = get_ppid();
-// printf()
- de.Print();
-
- if (animate && (nacl_pid == de.process_id_) &&
- (debug::DebugEvent::SINGLE_STEP_TRAP == de.event_code_)) {
- printf("debug::DebugEvent::SINGLE_STEP_TRAP == de.event_code_\n");
- fprintf(file, "%p\n", de.ip_);
- fflush(file);
-// deb_api.EnableSingleStep(de.process_id_, false);
- deb_api.SingleStep(nacl_pid);
- continue;
- }
-
- while (true) {
- char buff[100] = { 0 };
-
- // test only: beg
-// if (iterative) { // && (nacl_pid == de.process_id_)) {
-#ifdef CHROMEEE
- if (iterative && (nacl_pid == de.process_id_)) {
-#else
- if (iterative) {
-#endif
- printf("\n[%d]>", de.process_id_);
- fflush(stdout);
- fgets(buff, sizeof(buff) -1, stdin);
- } else {
- snprintf(buff, sizeof(buff), "c");
- }
- // test only: end
-
- static bool first = true;
- if (first) {
- first = false;
- deb_api.SetupProc(de.process_id_);
- }
-
- std::deque<std::string> words;
- Split(buff, " \t", &words);
-// printList(words);
- if (words.size() < 1)
- continue;
- if (words[0] == "c") {
- int signo = de.signal_no_;
- if ((signo == SIGTRAP) || (debug::DebugEvent::OUTPUT_DEBUG_STRING == de.event_code_)) // don't pass it to debugee
- signo = 0;
-// printf("ContinueDebugEvent line %d\n", __LINE__);
- deb_api.ContinueDebugEvent(de.process_id_, signo);
- break;
- } else if (words[0] == "a") {
- animate = true;
- deb_api.SingleStep(nacl_pid);
- break;
- } else if (words[0] == "e-") {
- // printf("show_events = false\n");
- show_events = false;
- continue;
- } else if (words[0] == "ss") {
- deb_api.SetupProc(de.process_id_);
- continue;
- } else if (words[0] == "ce") {
-// deb_api.EnableSingleStep(de.process_id_, false);
-// printf("ContinueDebugEvent line %d\n", __LINE__);
- deb_api.ContinueDebugEvent(de.process_id_, de.signal_no_);
- break;
- } else if (words[0] == "cn") {
-// deb_api.EnableSingleStep(de.process_id_, false);
-// printf("ContinueDebugEvent line %d\n", __LINE__);
- deb_api.ContinueDebugEvent(de.process_id_, 0);
- break;
- } else if (words[0] == "si") {
-/// deb_api.EnableSingleStep(de.process_id_, true);
-/// deb_api.ContinueDebugEvent(de.process_id_, 0);
- printf("si %d\n", de.process_id_);
- deb_api.SingleStep(de.process_id_);
- break;
- } else if (words[0] == "cb") {
- // continue and break immediately
-// deb_api.EnableSingleStep(de.process_id_, false);
-// printf("ContinueDebugEvent line %d\n", __LINE__);
- deb_api.ContinueDebugEvent(de.process_id_, 0);
- bool res = deb_api.DebugBreak(de.process_id_);
- if (!res)
- printf("Error\n");
- break;
- } else if ((words[0] == "m") && (words.size() >= 3)) {
- void* addr = atoptr(words[1].c_str());
- int len = atoi(words[2].c_str());
- size_t rd = 0;
- char buff[1024];
- printf("ReadingMem pid=%d addr=%p len=%d ...", de.process_id_, addr, len);
- bool res = deb_api.ReadProcessMemory(de.process_id_,
- addr,
- buff,
- len,
- &rd);
- printf("%d\n", (int)rd);
- if (res) {
- debug::Blob blob(buff, rd);
- std::string str = blob.ToHexString(false);
- printf("[%s]\n", str.c_str());
- } else {
- printf("Error\n");
- }
- } else if ((words[0] == "M") && (words.size() >= 3)) {
- void* addr = atoptr(words[1].c_str());
- debug::Blob blob;
- blob.LoadFromHexString(words[2]);
-
- void* data = blob.ToCBuffer();
- debug::Blob blob2(data, blob.Size());
- std::string str = blob2.ToHexString(false);
- printf("recv[%s]\n", str.c_str());
-
- if (NULL != data) {
- size_t wr = 0;
- bool res = deb_api.WriteProcessMemory(de.process_id_,
- addr,
- data,
- blob.Size(),
- &wr);
- if (!res)
- printf("Error\n");
- free(data);
- }
- } else if (words[0] == "g") {
- user_regs_struct context;
- memset(&context, 0xcc, sizeof(context));
- bool res = deb_api.ReadThreadContext(de.process_id_, &context);
- debug::Blob blob(&context, sizeof(context));
- std::string str = blob.ToHexString(false);
- printf("%s:[%s]\n", res ? "Ok" : "Err", str.c_str());
- deb_api.PrintThreadContext(context);
- } else if (words[0] == "G") {
- user_regs_struct context;
- memset(&context, 0xcc, sizeof(context));
- bool res = deb_api.ReadThreadContext(de.process_id_, &context);
- debug::Blob blob(&context, sizeof(context));
- std::string str = blob.ToHexString(false);
- printf("%s:[%s]\n", res ? "Ok" : "Err", str.c_str());
- deb_api.PrintThreadContext(context);
-
- res = deb_api.WriteThreadContext(de.process_id_, &context);
- printf("WriteThreadContext -> %s\n", res ? "Ok" : "Err");
- } else if (words[0] == "ip") {
- char* ip = 0;
- deb_api.GetIp(de.process_id_, &ip);
- printf("IP = %p\n", ip);
- } else if (words[0] == "ip--") {
- char* ip = 0;
- if (deb_api.GetIp(de.process_id_, &ip)) {
- ip--;
- deb_api.SetIp(de.process_id_, ip);
- deb_api.GetIp(de.process_id_, &ip);
- printf("IP = %p\n", ip);
- }
- } else if (words[0] == "ip++") {
- char* ip = 0;
- if (deb_api.GetIp(de.process_id_, &ip)) {
- ip++;
- deb_api.SetIp(de.process_id_, ip);
- deb_api.GetIp(de.process_id_, &ip);
- printf("IP = %p\n", ip);
- }
- } else if ((words[0] == "break") && (words.size() >= 2)) {
- int pid = atoi(words[2].c_str());
- bool res = deb_api.DebugBreak(pid);
- if (!res)
- printf("Error\n");
- }
- }
- }
- }
- printf("Exiting...");
- return 1;
-}
« no previous file with comments | « experimental/linux_oop_debugger/debug_blob.cc ('k') | experimental/mac_debugger/README » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698