This commit is contained in:
Jeremy Apthorp 2018-09-17 17:48:10 -07:00 коммит произвёл Aleksei Kuzmin
Родитель 9aaedc394e
Коммит 6e037f5e71
3 изменённых файлов: 30 добавлений и 12 удалений

Просмотреть файл

@ -4,9 +4,12 @@
#include "atom/browser/node_debugger.h"
#include <memory>
#include <string>
#include <vector>
#include "base/command_line.h"
#include "base/logging.h"
#include "base/strings/utf_string_conversions.h"
#include "libplatform/libplatform.h"
#include "native_mate/dictionary.h"
@ -24,29 +27,40 @@ void NodeDebugger::Start() {
if (inspector == nullptr)
return;
node::DebugOptions options;
std::vector<std::string> args;
for (auto& arg : base::CommandLine::ForCurrentProcess()->argv()) {
#if defined(OS_WIN)
const std::string nice_arg = base::UTF16ToUTF8(arg);
args.push_back(base::UTF16ToUTF8(arg));
#else
const std::string& nice_arg = arg;
args.push_back(arg);
#endif
// Stop handling arguments after a "--" to be consistent with Chromium
if (nice_arg == "--")
break;
}
options.ParseOption("Electron", nice_arg);
auto options = std::make_shared<node::DebugOptions>();
std::vector<std::string> exec_args;
std::vector<std::string> v8_args;
std::string error;
node::options_parser::DebugOptionsParser::instance.Parse(
&args, &exec_args, &v8_args, options.get(),
node::options_parser::kDisallowedInEnvironment, &error);
if (!error.empty()) {
// TODO(jeremy): what's the appropriate behaviour here?
LOG(ERROR) << "Error parsing node options: " << error;
}
// Set process._debugWaitConnect if --inspect-brk was specified to stop
// the debugger on the first line
if (options.wait_for_connect()) {
if (options->wait_for_connect()) {
mate::Dictionary process(env_->isolate(), env_->process_object());
process.Set("_breakFirstLine", true);
}
inspector->Start(/* path */ nullptr, options);
DCHECK(env_->inspector_agent()->IsStarted());
const char* path = "";
inspector->Start(path, options);
// FIXME
// DCHECK(env_->inspector_agent()->IsListening());
}
} // namespace atom

Просмотреть файл

@ -217,7 +217,11 @@ void NodeBindings::Initialize() {
// Init node.
// (we assume node::Init would not modify the parameters under embedded mode).
// NOTE: If you change this line, please ping @codebytere or @MarshallOfSound
node::Init(nullptr, nullptr, nullptr, nullptr);
int argc = 0;
int exec_argc = 0;
const char** argv = nullptr;
const char** exec_argv = nullptr;
node::Init(&argc, argv, &exec_argc, &exec_argv);
#if defined(OS_WIN)
// uv_init overrides error mode to suppress the default crash dialog, bring

Просмотреть файл

@ -35,8 +35,8 @@
#include "env.h"
#include "node.h"
#include "node_buffer.h"
#include "node_debug_options.h"
#include "node_internals.h"
#include "node_options.h"
#include "node_platform.h"
namespace node {