35 uint16_t message_size,
52 const auto level_value = unconstrained_read(level_offset);
53 const uint8_t level_number = level_value.as<uint8_t>();
56 const auto fields_size_value = unconstrained_read(fields_size_offset);
57 const uint32_t fields_size = fields_size_value.as<uint32_t>();
59 const uint32_t memory_reads =
60 1 + 1 + message_size + fields_size;
64 throw std::runtime_error(
70 std::string message_as_str;
71 for (uint32_t i = 0; i < message_size; ++i) {
72 const auto message_field = unconstrained_read(message_offset + i);
73 message_as_str +=
static_cast<char>(
static_cast<uint8_t
>(message_field.as_ff()));
75 std::vector<FF> fields;
76 fields.reserve(fields_size);
79 for (uint32_t i = 0; i < fields_size; ++i) {
80 const auto field = unconstrained_read(fields_offset + i);
81 fields.push_back(
field.as_ff());
85 throw std::runtime_error(
"Invalid debug log level: " +
std::to_string(level_number));
void debug_log(MemoryInterface &memory, AztecAddress contract_address, MemoryAddress level_offset, MemoryAddress message_offset, uint16_t message_size, MemoryAddress fields_offset, MemoryAddress fields_size_offset) override