diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-01 19:55:22 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-01 19:55:22 +0000 |
commit | 10f33b1bd6c6adb6306759a45bf3a5c18221d878 (patch) | |
tree | 60d8395d4bb748333871726781b6ef75a7d9c559 /base/debug_on_start.cc | |
parent | 995d592afc0fcee55a67b9f5ebcae7a093de6da0 (diff) | |
download | chromium_src-10f33b1bd6c6adb6306759a45bf3a5c18221d878.zip chromium_src-10f33b1bd6c6adb6306759a45bf3a5c18221d878.tar.gz chromium_src-10f33b1bd6c6adb6306759a45bf3a5c18221d878.tar.bz2 |
Move base/debug_on_start to base/debugger and rename it to be _win since it
only does anything on Windows.
TEST=it compiles
BUG=none
Review URL: http://codereview.chromium.org/5984007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70362 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/debug_on_start.cc')
-rw-r--r-- | base/debug_on_start.cc | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/base/debug_on_start.cc b/base/debug_on_start.cc deleted file mode 100644 index 15dab05..0000000 --- a/base/debug_on_start.cc +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) 2006-2008 The Chromium 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 <windows.h> - -#include "base/debug_on_start.h" - -#include "base/base_switches.h" -#include "base/basictypes.h" -#include "base/debug/debugger.h" - -// Minimalist implementation to try to find a command line argument. We can use -// kernel32 exported functions but not the CRT functions because we're too early -// in the process startup. -// The code is not that bright and will find things like ---argument or -// /-/argument. -// Note: command_line is non-destructively modified. -bool DebugOnStart::FindArgument(wchar_t* command_line, const char* argument_c) { - wchar_t argument[50]; - for (int i = 0; argument_c[i]; ++i) - argument[i] = argument_c[i]; - - int argument_len = lstrlen(argument); - int command_line_len = lstrlen(command_line); - while (command_line_len > argument_len) { - wchar_t first_char = command_line[0]; - wchar_t last_char = command_line[argument_len+1]; - // Try to find an argument. - if ((first_char == L'-' || first_char == L'/') && - (last_char == L' ' || last_char == 0 || last_char == L'=')) { - command_line[argument_len+1] = 0; - // Skip the - or / - if (lstrcmpi(command_line+1, argument) == 0) { - // Found it. - command_line[argument_len+1] = last_char; - return true; - } - // Fix back. - command_line[argument_len+1] = last_char; - } - // Continue searching. - ++command_line; - --command_line_len; - } - return false; -} - -// static -int __cdecl DebugOnStart::Init() { - // Try to find the argument. - if (FindArgument(GetCommandLine(), switches::kDebugOnStart)) { - // We can do 2 things here: - // - Ask for a debugger to attach to us. This involve reading the registry - // key and creating the process. - // - Do a int3. - - // It will fails if we run in a sandbox. That is expected. - base::debug::SpawnDebuggerOnProcess(GetCurrentProcessId()); - - // Wait for a debugger to come take us. - base::debug::WaitForDebugger(60, false); - } else if (FindArgument(GetCommandLine(), switches::kWaitForDebugger)) { - // Wait for a debugger to come take us. - base::debug::WaitForDebugger(60, true); - } - return 0; -} |