report: include information about event loop itself
PR-URL: https://github.com/nodejs/node/pull/25906 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
b1f82e4342
commit
91adbe14b4
@ -215,6 +215,11 @@ is provided below for reference.
|
|||||||
"is_referenced": false,
|
"is_referenced": false,
|
||||||
"address": "0x000000010188f2e0",
|
"address": "0x000000010188f2e0",
|
||||||
"details": ""
|
"details": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "loop",
|
||||||
|
"is_active": true,
|
||||||
|
"address": "0x000055fc7b2cb180"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
|
@ -311,9 +311,18 @@ static void WriteNodeReport(Isolate* isolate,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
writer.json_arraystart("libuv");
|
writer.json_arraystart("libuv");
|
||||||
if (env != nullptr)
|
if (env != nullptr) {
|
||||||
uv_walk(env->event_loop(), WalkHandle, static_cast<void*>(&writer));
|
uv_walk(env->event_loop(), WalkHandle, static_cast<void*>(&writer));
|
||||||
|
|
||||||
|
writer.json_start();
|
||||||
|
writer.json_keyvalue("type", "loop");
|
||||||
|
writer.json_keyvalue("is_active",
|
||||||
|
static_cast<bool>(uv_loop_alive(env->event_loop())));
|
||||||
|
writer.json_keyvalue("address",
|
||||||
|
ValueToHexString(reinterpret_cast<int64_t>(env->event_loop())));
|
||||||
|
writer.json_end();
|
||||||
|
}
|
||||||
|
|
||||||
writer.json_arrayend();
|
writer.json_arrayend();
|
||||||
|
|
||||||
// Report operating system information
|
// Report operating system information
|
||||||
|
@ -57,8 +57,15 @@ void GetNodeReport(v8::Isolate* isolate,
|
|||||||
void ReportEndpoints(uv_handle_t* h, std::ostringstream& out);
|
void ReportEndpoints(uv_handle_t* h, std::ostringstream& out);
|
||||||
void WalkHandle(uv_handle_t* h, void* arg);
|
void WalkHandle(uv_handle_t* h, void* arg);
|
||||||
std::string EscapeJsonChars(const std::string& str);
|
std::string EscapeJsonChars(const std::string& str);
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
std::string ValueToHexString(T value);
|
std::string ValueToHexString(T value) {
|
||||||
|
std::stringstream hex;
|
||||||
|
|
||||||
|
hex << "0x" << std::setfill('0') << std::setw(sizeof(T) * 2) << std::hex <<
|
||||||
|
value;
|
||||||
|
return hex.str();
|
||||||
|
}
|
||||||
|
|
||||||
// Function declarations - export functions in src/node_report_module.cc
|
// Function declarations - export functions in src/node_report_module.cc
|
||||||
void TriggerReport(const v8::FunctionCallbackInfo<v8::Value>& info);
|
void TriggerReport(const v8::FunctionCallbackInfo<v8::Value>& info);
|
||||||
|
@ -214,15 +214,6 @@ void WalkHandle(uv_handle_t* h, void* arg) {
|
|||||||
writer->json_end();
|
writer->json_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
std::string ValueToHexString(T value) {
|
|
||||||
std::stringstream hex;
|
|
||||||
|
|
||||||
hex << "0x" << std::setfill('0') << std::setw(sizeof(T) * 2) << std::hex <<
|
|
||||||
value;
|
|
||||||
return hex.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string EscapeJsonChars(const std::string& str) {
|
std::string EscapeJsonChars(const std::string& str) {
|
||||||
const std::string control_symbols[0x20] = {
|
const std::string control_symbols[0x20] = {
|
||||||
"\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005",
|
"\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user