src: add cli option to preserve env vars on dr · nodejs/node@2e3ca1b
@@ -61,7 +61,8 @@ static void WriteNodeReport(Isolate* isolate,
6161 std::ostream& out,
6262 Local<Value> error,
6363bool compact,
64-bool exclude_network = false);
64+bool exclude_network = false,
65+bool exclude_env = false);
6566static void PrintVersionInformation(JSONWriter* writer,
6667bool exclude_network = false);
6768static void PrintJavaScriptErrorStack(JSONWriter* writer,
@@ -78,6 +79,7 @@ static void PrintJavaScriptErrorProperties(JSONWriter* writer,
7879static void PrintNativeStack(JSONWriter* writer);
7980static void PrintResourceUsage(JSONWriter* writer);
8081static void PrintGCStatistics(JSONWriter* writer, Isolate* isolate);
82+static void PrintEnvironmentVariables(JSONWriter* writer);
8183static void PrintSystemInformation(JSONWriter* writer);
8284static void PrintLoadedLibraries(JSONWriter* writer);
8385static void PrintComponentVersions(JSONWriter* writer);
@@ -95,7 +97,8 @@ static void WriteNodeReport(Isolate* isolate,
9597 std::ostream& out,
9698 Local<Value> error,
9799bool compact,
98-bool exclude_network) {
100+bool exclude_network,
101+bool exclude_env) {
99102// Obtain the current time and the pid.
100103 TIME_TYPE tm_struct;
101104DiagnosticFilename::LocalTime(&tm_struct);
@@ -251,6 +254,9 @@ static void WriteNodeReport(Isolate* isolate,
251254 writer.json_arrayend();
252255253256// Report operating system information
257+if (exclude_env == false) {
258+PrintEnvironmentVariables(&writer);
259+ }
254260PrintSystemInformation(&writer);
255261256262 writer.json_objectend();
@@ -696,8 +702,7 @@ static void PrintResourceUsage(JSONWriter* writer) {
696702#endif // RUSAGE_THREAD
697703}
698704699-// Report operating system information.
700-static void PrintSystemInformation(JSONWriter* writer) {
705+static void PrintEnvironmentVariables(JSONWriter* writer) {
701706uv_env_item_t* envitems;
702707int envcount;
703708int r;
@@ -717,7 +722,10 @@ static void PrintSystemInformation(JSONWriter* writer) {
717722 }
718723719724 writer->json_objectend();
725+}
720726727+// Report operating system information.
728+static void PrintSystemInformation(JSONWriter* writer) {
721729#ifndef _WIN32
722730static struct {
723731const char* description;
@@ -917,6 +925,10 @@ std::string TriggerNodeReport(Isolate* isolate,
917925bool exclude_network = env != nullptr ? env->options()->report_exclude_network
918926 : per_process::cli_options->per_isolate
919927 ->per_env->report_exclude_network;
928+bool exclude_env =
929+ env != nullptr
930+ ? env->report_exclude_env()
931+ : per_process::cli_options->per_isolate->per_env->report_exclude_env;
920932921933report::WriteNodeReport(isolate,
922934 env,
@@ -926,7 +938,8 @@ std::string TriggerNodeReport(Isolate* isolate,
926938 *outstream,
927939 error,
928940 compact,
929- exclude_network);
941+ exclude_network,
942+ exclude_env);
930943931944// Do not close stdout/stderr, only close files we opened.
932945if (outfile.is_open()) {
@@ -980,8 +993,20 @@ void GetNodeReport(Isolate* isolate,
980993bool exclude_network = env != nullptr ? env->options()->report_exclude_network
981994 : per_process::cli_options->per_isolate
982995 ->per_env->report_exclude_network;
983-report::WriteNodeReport(
984- isolate, env, message, trigger, "", out, error, false, exclude_network);
996+bool exclude_env =
997+ env != nullptr
998+ ? env->report_exclude_env()
999+ : per_process::cli_options->per_isolate->per_env->report_exclude_env;
1000+report::WriteNodeReport(isolate,
1001+ env,
1002+ message,
1003+ trigger,
1004+"",
1005+ out,
1006+ error,
1007+false,
1008+ exclude_network,
1009+ exclude_env);
9851010}
98610119871012// External function to trigger a report, writing to a supplied stream.
@@ -997,8 +1022,20 @@ void GetNodeReport(Environment* env,
9971022bool exclude_network = env != nullptr ? env->options()->report_exclude_network
9981023 : per_process::cli_options->per_isolate
9991024 ->per_env->report_exclude_network;
1000-report::WriteNodeReport(
1001- isolate, env, message, trigger, "", out, error, false, exclude_network);
1025+bool exclude_env =
1026+ env != nullptr
1027+ ? env->report_exclude_env()
1028+ : per_process::cli_options->per_isolate->per_env->report_exclude_env;
1029+report::WriteNodeReport(isolate,
1030+ env,
1031+ message,
1032+ trigger,
1033+"",
1034+ out,
1035+ error,
1036+false,
1037+ exclude_network,
1038+ exclude_env);
10021039}
1003104010041041} // namespace node