forked from luck/tmp_suning_uos_patched
perf flamegraph: Explicitly set utf-8 encoding
On some platforms the default encoding is not utf-8, which causes an UnicodeDecodeError when reading the flamegraph template and writing the flamegraph Signed-off-by: Andreas Gerstmayr <agerstmayr@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Michael Petlan <mpetlan@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lore.kernel.org/lkml/20200619153232.203537-1-agerstmayr@redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
625d344978
commit
c42ad5d435
|
@ -17,6 +17,7 @@
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
import io
|
||||||
import argparse
|
import argparse
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
@ -81,7 +82,7 @@ class FlameGraphCLI:
|
||||||
|
|
||||||
if self.args.format == "html":
|
if self.args.format == "html":
|
||||||
try:
|
try:
|
||||||
with open(self.args.template) as f:
|
with io.open(self.args.template, encoding="utf-8") as f:
|
||||||
output_str = f.read().replace("/** @flamegraph_json **/",
|
output_str = f.read().replace("/** @flamegraph_json **/",
|
||||||
json_str)
|
json_str)
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
|
@ -93,11 +94,12 @@ class FlameGraphCLI:
|
||||||
output_fn = self.args.output or "stacks.json"
|
output_fn = self.args.output or "stacks.json"
|
||||||
|
|
||||||
if output_fn == "-":
|
if output_fn == "-":
|
||||||
sys.stdout.write(output_str)
|
with io.open(sys.stdout.fileno(), "w", encoding="utf-8", closefd=False) as out:
|
||||||
|
out.write(output_str)
|
||||||
else:
|
else:
|
||||||
print("dumping data to {}".format(output_fn))
|
print("dumping data to {}".format(output_fn))
|
||||||
try:
|
try:
|
||||||
with open(output_fn, "w") as out:
|
with io.open(output_fn, "w", encoding="utf-8") as out:
|
||||||
out.write(output_str)
|
out.write(output_str)
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
print("Error writing output file: {}".format(e), file=sys.stderr)
|
print("Error writing output file: {}".format(e), file=sys.stderr)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user