X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/92c0f1f93abd31aabba2b867265ee78d0fa082ca..c1103c3a2b794d6f7e4599cf0182d72937b9a021:/src/instr/instr_paje_trace.cpp diff --git a/src/instr/instr_paje_trace.cpp b/src/instr/instr_paje_trace.cpp index cbdc9f9930..7573537fc2 100644 --- a/src/instr/instr_paje_trace.cpp +++ b/src/instr/instr_paje_trace.cpp @@ -8,6 +8,7 @@ #include "xbt/virtu.h" /* sg_cmdline */ #include #include /** std::setprecision **/ +#include "simgrid/sg_config.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr_trace, "tracing event system"); @@ -36,13 +37,12 @@ static void print_row() { static void print_timestamp(paje_event_t event) { stream << " "; /* prevent 0.0000 in the trace - this was the behavior before the transition to c++ */ - if (event->timestamp == 0) + if (event->timestamp < 1e-12) stream << 0; else stream << event->timestamp; } - template static void print_default_pajeLink_row(paje_event_t& event) { init_stream(event); print_timestamp(event); @@ -75,31 +75,31 @@ template static void print_default_pajeVariable_row(paje_event_t& ev print_row(); } -void TRACE_paje_init(void) { - active_writer.print_DefineContainerType = print_pajeDefineContainerType; - active_writer.print_DefineVariableType = print_pajeDefineVariableType; - active_writer.print_DefineStateType = print_pajeDefineStateType; - active_writer.print_DefineEventType = print_pajeDefineEventType; - active_writer.print_DefineLinkType = print_pajeDefineLinkType; - active_writer.print_DefineEntityValue = print_pajeDefineEntityValue; - active_writer.print_CreateContainer = print_pajeCreateContainer; - active_writer.print_DestroyContainer = print_pajeDestroyContainer; - active_writer.print_SetVariable = print_pajeSetVariable; - active_writer.print_AddVariable = print_pajeAddVariable; - active_writer.print_SubVariable = print_pajeSubVariable; - active_writer.print_SetState = print_pajeSetState; - active_writer.print_PushState = print_pajePushState; - active_writer.print_PopState = print_pajePopState; - active_writer.print_ResetState = print_pajeResetState; - active_writer.print_StartLink = print_pajeStartLink; - active_writer.print_EndLink = print_pajeEndLink; - active_writer.print_NewEvent = print_pajeNewEvent; +void TRACE_paje_init() { + active_writer.print_DefineContainerType = &print_pajeDefineContainerType; + active_writer.print_DefineVariableType = &print_pajeDefineVariableType; + active_writer.print_DefineStateType = &print_pajeDefineStateType; + active_writer.print_DefineEventType = &print_pajeDefineEventType; + active_writer.print_DefineLinkType = &print_pajeDefineLinkType; + active_writer.print_DefineEntityValue = &print_pajeDefineEntityValue; + active_writer.print_CreateContainer = &print_pajeCreateContainer; + active_writer.print_DestroyContainer = &print_pajeDestroyContainer; + active_writer.print_SetVariable = &print_pajeSetVariable; + active_writer.print_AddVariable = &print_pajeAddVariable; + active_writer.print_SubVariable = &print_pajeSubVariable; + active_writer.print_SetState = &print_pajeSetState; + active_writer.print_PushState = &print_pajePushState; + active_writer.print_PopState = &print_pajePopState; + active_writer.print_ResetState = &print_pajeResetState; + active_writer.print_StartLink = &print_pajeStartLink; + active_writer.print_EndLink = &print_pajeEndLink; + active_writer.print_NewEvent = &print_pajeNewEvent; } -void TRACE_paje_start(void) { +void TRACE_paje_start() { char *filename = TRACE_get_filename(); tracing_file = fopen(filename, "w"); - if (tracing_file == NULL){ + if (tracing_file == nullptr){ THROWF (system_error, 1, "Tracefile %s could not be opened for writing.", filename); } @@ -126,7 +126,7 @@ void TRACE_paje_start(void) { TRACE_header(TRACE_basic(),TRACE_display_sizes()); } -void TRACE_paje_end(void) { +void TRACE_paje_end() { fclose(tracing_file); char *filename = TRACE_get_filename(); XBT_DEBUG("Filename %s is closed", filename); @@ -141,7 +141,8 @@ void print_pajeDefineContainerType(paje_event_t event) { void print_pajeDefineVariableType(paje_event_t event) { print_paje_debug(__FUNCTION__, event); print_default_pajeType_row(event); - stream << " \"" << static_cast(event->data)->type->color << "\""; + if(static_cast(event->data)->type->color) + stream << " \"" << static_cast(event->data)->type->color << "\""; print_row(); } @@ -173,8 +174,9 @@ void print_pajeDefineEntityValue (paje_event_t event) { init_stream(event); stream << " " << static_cast(event->data)->value->id << " " << static_cast(event->data)->value->father->id - << " " << static_cast(event->data)->value->name - << " \"" << static_cast(event->data)->value->color << "\""; + << " " << static_cast(event->data)->value->name; + if(static_cast(event->data)->value->color) + stream << " \"" << static_cast(event->data)->value->color << "\""; print_row(); } @@ -220,6 +222,12 @@ void print_pajeSetState(paje_event_t event) { print_default_pajeState_row(event); stream << " " << static_cast(event->data)->value->id; +#if HAVE_SMPI + if (xbt_cfg_get_boolean("smpi/trace-call-location")) { + stream << " \"" << static_cast(event->data)->filename + << "\" " << static_cast(event->data)->linenumber; + } +#endif print_row(); } @@ -230,19 +238,25 @@ void print_pajePushState(paje_event_t event) { if (TRACE_display_sizes()) { stream << " "; - if (static_cast(event->data)->extra != NULL) { + if (static_cast(event->data)->extra != nullptr) { stream << static_cast(static_cast(event->data)->extra)->send_size; } else { stream << 0; } } +#if HAVE_SMPI + if (xbt_cfg_get_boolean("smpi/trace-call-location")) { + stream << " \"" << static_cast(event->data)->filename + << "\" " << static_cast(event->data)->linenumber; + } +#endif print_row(); - if (static_cast(event->data)->extra != NULL) { - if (static_cast(static_cast(event->data)->extra)->sendcounts != NULL) + if (static_cast(event->data)->extra != nullptr) { + if (static_cast(static_cast(event->data)->extra)->sendcounts != nullptr) xbt_free(static_cast(static_cast(event->data)->extra)->sendcounts); - if (static_cast(static_cast(event->data)->extra)->recvcounts != NULL) + if (static_cast(static_cast(event->data)->extra)->recvcounts != nullptr) xbt_free(static_cast(static_cast(event->data)->extra)->recvcounts); xbt_free(static_cast(event->data)->extra); }