Commit a8cab84e authored by peter.rybin@gmail.com's avatar peter.rybin@gmail.com

Implement "wait for connection" feature

Review URL: http://codereview.chromium.org/489005


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3457 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 4c987419
...@@ -258,8 +258,11 @@ class EXPORT Debug { ...@@ -258,8 +258,11 @@ class EXPORT Debug {
* supplied TCP/IP port for remote debugger connection. * supplied TCP/IP port for remote debugger connection.
* \param name the name of the embedding application * \param name the name of the embedding application
* \param port the TCP/IP port to listen on * \param port the TCP/IP port to listen on
* \param wait_for_connection whether V8 should pause on a first breakpoint
* allowing remote debugger to connect before anything interesting happened
*/ */
static bool EnableAgent(const char* name, int port); static bool EnableAgent(const char* name, int port,
bool wait_for_connection = false);
}; };
......
...@@ -3741,8 +3741,8 @@ Local<Value> Debug::GetMirror(v8::Handle<v8::Value> obj) { ...@@ -3741,8 +3741,8 @@ Local<Value> Debug::GetMirror(v8::Handle<v8::Value> obj) {
} }
bool Debug::EnableAgent(const char* name, int port) { bool Debug::EnableAgent(const char* name, int port, bool wait_for_connection) {
return i::Debugger::StartAgent(name, port); return i::Debugger::StartAgent(name, port, wait_for_connection);
} }
#endif // ENABLE_DEBUGGER_SUPPORT #endif // ENABLE_DEBUGGER_SUPPORT
......
...@@ -2483,7 +2483,24 @@ Handle<Object> Debugger::Call(Handle<JSFunction> fun, ...@@ -2483,7 +2483,24 @@ Handle<Object> Debugger::Call(Handle<JSFunction> fun,
} }
bool Debugger::StartAgent(const char* name, int port) { static void StubMessageHandler2(const v8::Debug::Message& message) {
// Simply ignore message.
}
bool Debugger::StartAgent(const char* name, int port,
bool wait_for_connection) {
if (wait_for_connection) {
// Suspend V8 if it is already running or set V8 to suspend whenever
// it starts.
// Provide stub message handler; V8 auto-continues each suspend
// when there is no message handler; we doesn't need it.
// Once become suspended, V8 will stay so indefinitely long, until remote
// debugger connects and issues "continue" command.
Debugger::message_handler_ = StubMessageHandler2;
v8::Debug::DebugBreak();
}
if (Socket::Setup()) { if (Socket::Setup()) {
agent_ = new DebuggerAgent(name, port); agent_ = new DebuggerAgent(name, port);
agent_->Start(); agent_->Start();
......
...@@ -636,7 +636,7 @@ class Debugger { ...@@ -636,7 +636,7 @@ class Debugger {
bool* pending_exception); bool* pending_exception);
// Start the debugger agent listening on the provided port. // Start the debugger agent listening on the provided port.
static bool StartAgent(const char* name, int port); static bool StartAgent(const char* name, int port, bool wait_for_connection);
// Stop the debugger agent. // Stop the debugger agent.
static void StopAgent(); static void StopAgent();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment