Index · Directives systemd 256


sd_bus_message_dump — Produce a string representation of a message for debugging purposes


#include <systemd/sd-bus.h>
int sd_bus_message_dump(sd_bus_message *m,
 FILE *f,
 uint64_t flags);



The sd_bus_message_dump() function writes a textual representation of the message m to the stream f. If f is NULL, standard output (stdio) will be used. This function is intended to be used for debugging purposes, and the output is neither stable nor designed to be machine readable.

The flags parameter may be used to modify the output. With SD_BUS_MESSAGE_DUMP_WITH_HEADER, a header that specifies the message type and flags and some additional metadata is printed. When SD_BUS_MESSAGE_DUMP_SUBTREE_ONLY is not passed, the contents of the whole message are printed. When it is passed, only the current container in printed.

Note that this function moves the read pointer of the message. It may be necessary to reset the position afterwards, for example with sd_bus_message_rewind(3).


Output for a signal message (with SD_BUS_MESSAGE_DUMP_WITH_HEADER):

‣ Type=signal  Endian=l  Flags=1  Version=1  Cookie=22
  Path=/value/a  Interface=org.freedesktop.DBus.Properties  Member=PropertiesChanged
  MESSAGE "sa{sv}as" {
          STRING "org.freedesktop.systemd.ValueTest";
          ARRAY "{sv}" {
                  DICT_ENTRY "sv" {
                          STRING "Value";
                          VARIANT "s" {
                                  STRING "object 0x1e, path /value/a";
          ARRAY "s" {
                  STRING "Value2";
                  STRING "AnExplicitProperty";

Return Value

On success, this function returns 0 or a positive integer. On failure, it returns a negative errno-style error code. No error codes are currently defined.


Functions described here are available as a shared library, which can be compiled against and linked to with the libsystemd pkg-config(1) file.

The code described here uses getenv(3), which is declared to be not multi-thread-safe. This means that the code calling the functions described here must not call setenv(3) from a parallel thread. It is recommended to only do calls to setenv() from an early phase of the program when no other threads have been started.

See Also

systemd(1), sd-bus(3)