Those are the SimGrid version of the good ol' assert macro.
You can pass them a format message and arguments, just as if it where a printf. It is converted to a XBT_CRITICAL logging request. Be careful: the boolean expression that you want to test should not have side effects, because assertions are disabled at compile time if NDEBUG is set.
◆ xbt_assert
#define xbt_assert |
( |
|
... | ) |
|
The condition which failed will be displayed.
- Examples:
- examples/msg/actions-comm/actions-comm.c, examples/msg/actions-storage/actions-storage.c, examples/msg/app-masterworker/app-masterworker.c, examples/msg/app-pingpong/app-pingpong.c, examples/msg/app-token-ring/app-token-ring.c, examples/msg/async-wait/async-wait.c, examples/msg/async-waitall/async-waitall.c, examples/msg/async-waitany/async-waitany.c, examples/msg/dht-chord/dht-chord.c, examples/msg/network-ns3/network-ns3.c, examples/msg/platform-properties/platform-properties.c, examples/msg/process-create/process-create.c, examples/msg/process-kill/process-kill.c, examples/msg/process-migration/process-migration.c, examples/msg/process-startkilltime/process-startkilltime.c, examples/msg/process-suspend/process-suspend.c, examples/msg/task-priority/task-priority.c, examples/msg/trace-categories/trace-categories.c, examples/msg/trace-host-user-variables/trace-host-user-variables.c, examples/msg/trace-link-user-variables/trace-link-user-variables.c, examples/msg/trace-masterworker/trace-masterworker.c, examples/msg/trace-platform/trace-platform.c, examples/msg/trace-process-migration/trace-process-migration.c, examples/msg/trace-route-user-variables/trace-route-user-variables.c, examples/s4u/actions-comm/s4u_actions-comm.cpp, examples/s4u/actions-storage/s4u_actions-storage.cpp, examples/s4u/actor-kill/s4u_actor-kill.cpp, examples/s4u/actor-migration/s4u_actor-migration.cpp, examples/s4u/actor-suspend/s4u_actor-suspend.cpp, examples/s4u/app-masterworker/s4u_app-masterworker.cpp, and examples/s4u/app-token-ring/s4u_app-token-ring.cpp.
◆ _xbt_assert_ARG1
#define _xbt_assert_ARG1 |
( |
|
cond | ) |
_xbt_assert_ARGN(cond, "Assertion %s failed", #cond) |
◆ _xbt_assert_ARGN
#define _xbt_assert_ARGN |
( |
|
cond, |
|
|
|
... |
|
) |
| |
Value:do { \
if (!(cond)) { \
XBT_CCRITICAL(
root, __VA_ARGS__); \
xbt_backtrace_display_current(); \
abort(); \
} \
} while (0)
int xbt_log_no_loc
Definition: log.c:27
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype void int MPI_Datatype MPI_Comm comm MPI_Aint MPI_Info void baseptr void int MPI_Datatype void int MPI_Datatype MPI_Comm comm MPI_Comm int keyval MPI_Comm int void attr_value void int MPI_Datatype int root
Definition: smpi_mpi.cpp:50
◆ xbt_die
Value:do { \
XBT_CCRITICAL(xbt, __VA_ARGS__); \
xbt_abort(); \
} while (0)
Kill the program with an error message.
- Parameters
-
... | a format string and its arguments |
Things are so messed up that the only thing to do now, is to stop the program.
The message is handled by a CRITICAL logging request, and may consist of a format string with arguments.
- Examples:
- examples/msg/dht-chord/dht-chord.c, and examples/msg/io-file/io-file.c.
◆ xbt_abort()
Kill the program in silence.