Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

inspector: use inspector API for "break on start" #12076

Merged
merged 0 commits into from
Mar 30, 2017
Merged

inspector: use inspector API for "break on start" #12076

merged 0 commits into from
Mar 30, 2017

Conversation

eugeneo
Copy link
Contributor

@eugeneo eugeneo commented Mar 27, 2017

This change removes a need for using deprecated debug context for
breaking at the start of the main module.

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • commit message follows commit guidelines
Affected core subsystem(s)

inspector

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. dont-land-on-v4.x lib / src Issues and PRs related to general changes in the lib or src directory. module Issues and PRs related to the module subsystem. labels Mar 27, 2017
@eugeneo
Copy link
Contributor Author

eugeneo commented Mar 27, 2017

cc @ofrobots

@@ -258,7 +258,9 @@
if (process.inspector) {
inspectorConsole = global.console;
wrapConsoleCall = process.inspector.wrapConsoleCall;
delete process.inspector;
delete process.inspector.wrapConsoleCall;
if (Object.keys(process.inspector).length == 0)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

===

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

lib/module.js Outdated
}
var wrapper = inspector.callAndPauseOnStart.bind(inspector);
delete inspector.callAndPauseOnStart;
if (Object.keys(process.inspector).length == 0) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

void AgentImpl::CallAndPauseOnStart(
const v8::FunctionCallbackInfo<v8::Value>& args) {
Environment* env = Environment::GetCurrent(args);
v8::HandleScope scope(env->isolate());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The HandleScope isn't necessary, API functions get one implicitly.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

return env->ThrowError("First argument for a "
"inspector.callAndPauseOnStart call "
"should be a function");
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just CHECK(args.Length() > 1) and CHECK(args[0]->IsFunction())? This is only called by built-in code, right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now, it is not supposed to be a public API. This might change in the future.

call_args.push_back(args[i]);
}

env->inspector_agent()->SchedulePauseOnNextStatement("Break on start");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This effectively breaks on the next call into JS land? If this function were to return instead of calling the function, it would break at the next line in lib/module.js?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It breaks on the next JS instruction. E.g. I just noticed that it is not breaking inside the wrapper - it seems to break on the wrapper call (e.g. one step is required to reach the same point it was breaking before). It does not make any difference for the tests as the line number and variables are the same.

@eugeneo
Copy link
Contributor Author

eugeneo commented Mar 29, 2017

Thank you for the review. I addressed the comments, please take another look.

@@ -310,6 +313,14 @@ class V8NodeInspector : public v8_inspector::V8InspectorClient {
session_->dispatchProtocolMessage(message);
}

void schedulePauseOnNextStatement(const std::string& reason) {
if (session_) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you check that session_ != nullptr?


env->inspector_agent()->SchedulePauseOnNextStatement("Break on start");

v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

env->context() might be simpler

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@jasnell
Copy link
Member

jasnell commented Mar 30, 2017

CI has some challenges but they appear unrelated.

@eugeneo eugeneo modified the milestone: ake -j16 test Mar 30, 2017
@eugeneo eugeneo closed this Mar 30, 2017
@eugeneo eugeneo deleted the continue-to-location branch March 30, 2017 20:27
@eugeneo
Copy link
Contributor Author

eugeneo commented Mar 30, 2017

Landed as 7954d2a

@eugeneo eugeneo merged commit 7954d2a into nodejs:master Mar 30, 2017
@jasnell jasnell mentioned this pull request Apr 4, 2017
@italoacasas
Copy link
Contributor

cc @eugeneo

@eugeneo
Copy link
Contributor Author

eugeneo commented Apr 10, 2017

@italoacasas - sorry, I forgot to add labels. This code does not need to be ported to pre-8x as those versions still rely on debug context. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. module Issues and PRs related to the module subsystem.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants