Add “—endless-trace-buffer” to switch to an endless buffer from a ring buffer while tracing. (flutter/engine#2966)

This commit is contained in:
Chinmay Garde
2016-08-23 16:16:22 -07:00
committed by GitHub
parent 70cc2b0e33
commit 8fc97078ca
2 changed files with 17 additions and 3 deletions

View File

@@ -20,6 +20,7 @@ struct Settings {
bool start_paused = false;
bool enable_dart_checked_mode = false;
bool trace_startup = false;
bool endless_trace_buffer = false;
std::string aot_snapshot_path;
std::string aot_isolate_snapshot_file_name;
std::string aot_vm_isolate_snapshot_file_name;

View File

@@ -115,6 +115,9 @@ static const char* kDartStartPausedArgs[]{
static const char* kDartTraceStartupArgs[]{
"--timeline_streams=Compiler,Dart,Embedder,GC",
};
static const char* kDartEndlessTraceBufferArgs[]{
"--timeline_recorder=endless",
};
@@ -339,7 +342,8 @@ DartJniIsolateData* GetDartJniDataForCurrentIsolate() {
#if DART_ALLOW_DYNAMIC_RESOLUTION
constexpr char kDartVmIsolateSnapshotBufferName[] = "kDartVmIsolateSnapshotBuffer";
constexpr char kDartVmIsolateSnapshotBufferName[] =
"kDartVmIsolateSnapshotBuffer";
constexpr char kDartIsolateSnapshotBufferName[] = "kDartIsolateSnapshotBuffer";
constexpr char kInstructionsSnapshotName[] = "kInstructionsSnapshot";
constexpr char kDataSnapshotName[] = "kDataSnapshot";
@@ -422,7 +426,8 @@ void* _DartSymbolLookup(const char* symbol_name) {
const char* file_name = symbol_asset.file_name;
const std::string* settings_override = reinterpret_cast<const std::string*>(
reinterpret_cast<const uint8_t*>(&settings) + symbol_asset.settings_offset);
reinterpret_cast<const uint8_t*>(&settings) +
symbol_asset.settings_offset);
if (!settings_override->empty())
file_name = settings_override->c_str();
@@ -580,8 +585,16 @@ void InitDartVM() {
if (settings.start_paused)
PushBackAll(&args, kDartStartPausedArgs, arraysize(kDartStartPausedArgs));
if (settings.trace_startup)
if (settings.endless_trace_buffer || settings.trace_startup) {
// If we are tracing startup, make sure the trace buffer is endless so we
// don't lose early traces.
PushBackAll(&args, kDartEndlessTraceBufferArgs,
arraysize(kDartEndlessTraceBufferArgs));
}
if (settings.trace_startup) {
PushBackAll(&args, kDartTraceStartupArgs, arraysize(kDartTraceStartupArgs));
}
for (size_t i = 0; i < settings.dart_flags.size(); i++)
args.push_back(settings.dart_flags[i].c_str());