Reapply "wait for connection" feature implementation
Review URL: http://codereview.chromium.org/491079 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3500 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
64e443768e
commit
d3e63a319b
@ -258,8 +258,11 @@ class EXPORT Debug {
|
||||
* supplied TCP/IP port for remote debugger connection.
|
||||
* \param name the name of the embedding application
|
||||
* \param port the TCP/IP port to listen on
|
||||
* \param wait_for_connection whether V8 should pause on a first statement
|
||||
* 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) {
|
||||
}
|
||||
|
||||
|
||||
bool Debug::EnableAgent(const char* name, int port) {
|
||||
return i::Debugger::StartAgent(name, port);
|
||||
bool Debug::EnableAgent(const char* name, int port, bool wait_for_connection) {
|
||||
return i::Debugger::StartAgent(name, port, wait_for_connection);
|
||||
}
|
||||
#endif // ENABLE_DEBUGGER_SUPPORT
|
||||
|
||||
|
19
src/debug.cc
19
src/debug.cc
@ -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()) {
|
||||
agent_ = new DebuggerAgent(name, port);
|
||||
agent_->Start();
|
||||
|
@ -636,7 +636,8 @@ class Debugger {
|
||||
bool* pending_exception);
|
||||
|
||||
// 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 = false);
|
||||
|
||||
// Stop the debugger agent.
|
||||
static void StopAgent();
|
||||
|
Loading…
Reference in New Issue
Block a user