Debug-Unterstützung vom Github

Hallo,
bitte nicht lachen. Ich suche Möglichkeiten bei der Vereinfachung für das Debuggen und habe im Github was gefunden. Habe die Beispieldateien in die IDE kopiert und laufen lassen. Leider bekomme ich nichts auf den Seriellen Monitor geschickt. Kann mir jemand sagen, was ich falsch mache? Bin besonders an dieser Funktion interessiert DEBUGVAL( a, b, c );.
Ich weiß, man sollte keine fremden Programme verwenden, die man nicht versteht. Evtl. mache ich ja auch einen banalen Fehler.
danke für die Antwort

das ist mein test

#define PRINTSTREAM_FALLBACK
#include "Debug.hpp"


void setup() {
  Serial.begin(115200);
  while (!Serial);
}

void loop() {
  DEBUG( "This is the result of `DEBUG`" );
  DEBUGREF( "This is the result of `DEBUGREF`" );
  DEBUGFN( "This is the result of `DEBUGFN`" );
  DEBUGTIME( "This is the result of `DEBUGTIME`" );
  int a = 1, b = 2, c = 3;
  DEBUGVAL( a, b, c );
  DEBUGVAL( log10(1000) - 2 );
  DEBUGVAL( millis() );
  DEBUGVAL( Serial.read() );
  someFunction(42);
  DEBUG("");
  delay(5000);
}

und das die kopierte datei vom github

ups vergessen

github ist groß. Es wäre sinnvoll, uns einen Link auf das, was Du gefunden hat, zu geben.

Gruß Tommy

neuer versuch

#ifndef DEBUG_HPP
#define DEBUG_HPP

// Uncomment this line to flush the output after each debug statement
// #define FLUSH_ON_EVERY_DEBUG_STATEMENT

#ifdef FLUSH_ON_EVERY_DEBUG_STATEMENT
#define ENDL endl
#else
#define ENDL "\r\n"
#endif

#ifdef ARDUINO

// Uncomment this line to override Arduino IDE debug output
// #define DEBUG_OUT Serial

#if (defined(ESP32) || defined(ESP8266)) &&                                    \
    defined(FLUSH_ON_EVERY_DEBUG_STATEMENT)
#error "ESP32 and ESP8266 don't support flushing `Print` objects"
#endif

#ifndef PRINTSTREAM_FALLBACK
#include <PrintStream.h>
#else
#include <Arduino.h> // Print
typedef Print &manipulator(Print &);
inline Print &endl(Print &printer) {
  printer.println();
#if !(defined(ESP32) || defined(ESP8266))
  printer.flush();
#endif
  return printer;
}
template <class T> inline Print &operator<<(Print &printer, const T printable) {
  printer.print(printable);
  return printer;
}
template <> inline Print &operator<<(Print &printer, manipulator pf) {
  return pf(printer);
}
#endif

#else // No Arduino

#include <iomanip>
#include <iostream>
using std::boolalpha;
using std::cout;
using std::dec;
using std::endl;
using std::flush;
using std::hex;
using std::noboolalpha;
using std::noshowbase;
using std::nouppercase;
using std::setbase;
using std::setprecision;
using std::showbase;
using std::uppercase;
#define F(x) (x)

#endif

#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)

#define FUNC_LOCATION                                                          \
  '[' << __PRETTY_FUNCTION__ << F(" @ line " STR(__LINE__) "]:\t")
#define LOCATION "[" __FILE__ ":" STR(__LINE__) "]:\t"

#define NAMEDVALUE(x) F(STR(x) " = ") << x

#ifdef DEBUG_OUT

#pragma message("Debugging enabled on output " STR(DEBUG_OUT))

#define DEBUG(x)                                                               \
  do {                                                                         \
    DEBUG_OUT << x << ENDL;                                                    \
  } while (0)

#define DEBUGREF(x)                                                            \
  do {                                                                         \
    DEBUG_OUT << F(LOCATION) << x << ENDL;                                     \
  } while (0)

#define DEBUGFN(x)                                                             \
  do {                                                                         \
    DEBUG_OUT << FUNC_LOCATION << x << ENDL;                                   \
  } while (0)

#ifdef ARDUINO
#define DEBUGTIME(x)                                                           \
  do {                                                                         \
    unsigned long t = millis();                                                \
    unsigned long h = t / (60UL * 60 * 1000);                                  \
    unsigned long m = (t / (60UL * 1000)) % 60;                                \
    unsigned long s = (t / (1000UL)) % 60;                                     \
    unsigned long ms = t % 1000;                                               \
    const char *ms_zeros = ms > 99 ? "" : (ms > 9 ? "0" : "00");               \
    DEBUG_OUT << '[' << h << ':' << m << ':' << s << '.' << ms_zeros << ms     \
              << "]:\t" << x << ENDL;                                          \
  } while (0)
#endif

#define DEBUGVAL(...) DEBUGVALN(COUNT(__VA_ARGS__))(__VA_ARGS__)

#define COUNT(...) COUNT_HELPER(__VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
#define COUNT_HELPER(N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N, ...) N

#define DEBUGVALN(N) DEBUGVALN_HELPER(N)
#define DEBUGVALN_HELPER(N) DEBUGVAL##N

#define DEBUGVAL10(x, ...)                                                     \
  do {                                                                         \
    DEBUG_OUT << NAMEDVALUE(x) << ", ";                                        \
    DEBUGVAL9(__VA_ARGS__);                                                    \
  } while (0)
#define DEBUGVAL9(x, ...)                                                      \
  do {                                                                         \
    DEBUG_OUT << NAMEDVALUE(x) << ", ";                                        \
    DEBUGVAL8(__VA_ARGS__);                                                    \
  } while (0)
#define DEBUGVAL8(x, ...)                                                      \
  do {                                                                         \
    DEBUG_OUT << NAMEDVALUE(x) << ", ";                                        \
    DEBUGVAL7(__VA_ARGS__);                                                    \
  } while (0)
#define DEBUGVAL7(x, ...)                                                      \
  do {                                                                         \
    DEBUG_OUT << NAMEDVALUE(x) << ", ";                                        \
    DEBUGVAL6(__VA_ARGS__);                                                    \
  } while (0)
#define DEBUGVAL6(x, ...)                                                      \
  do {                                                                         \
    DEBUG_OUT << NAMEDVALUE(x) << ", ";                                        \
    DEBUGVAL5(__VA_ARGS__);                                                    \
  } while (0)
#define DEBUGVAL5(x, ...)                                                      \
  do {                                                                         \
    DEBUG_OUT << NAMEDVALUE(x) << ", ";                                        \
    DEBUGVAL4(__VA_ARGS__);                                                    \
  } while (0)
#define DEBUGVAL4(x, ...)                                                      \
  do {                                                                         \
    DEBUG_OUT << NAMEDVALUE(x) << ", ";                                        \
    DEBUGVAL3(__VA_ARGS__);                                                    \
  } while (0)
#define DEBUGVAL3(x, ...)                                                      \
  do {                                                                         \
    DEBUG_OUT << NAMEDVALUE(x) << ", ";                                        \
    DEBUGVAL2(__VA_ARGS__);                                                    \
  } while (0)
#define DEBUGVAL2(x, ...)                                                      \
  do {                                                                         \
    DEBUG_OUT << NAMEDVALUE(x) << ", ";                                        \
    DEBUGVAL1(__VA_ARGS__);                                                    \
  } while (0)
#define DEBUGVAL1(x)                                                           \
  do {                                                                         \
    DEBUG_OUT << NAMEDVALUE(x) << ENDL;                                        \
  } while (0)

#else // Debugging disabled

#define DEBUG(x)                                                               \
  do {                                                                         \
  } while (0)
#define DEBUGREF(x)                                                            \
  do {                                                                         \
  } while (0)
#define DEBUGFN(x)                                                             \
  do {                                                                         \
  } while (0)
#ifdef ARDUINO
#define DEBUGTIME(x)                                                           \
  do {                                                                         \
  } while (0)
#endif
#define DEBUGVAL(...)                                                          \
  do {                                                                         \
  } while (0)

#endif

#endif
#define PRINTSTREAM_FALLBACK
#define DEBUG_OUT Serial
#include "Debug.hpp"


void setup() {
  Serial.begin(115200);
  while (!Serial);
}

void loop() {
  DEBUG( "This is the result of `DEBUG`" );
  DEBUGREF( "This is the result of `DEBUGREF`" );
  DEBUGFN( "This is the result of `DEBUGFN`" );
  DEBUGTIME( "This is the result of `DEBUGTIME`" );
  int a = 1, b = 2, c = 3;
  DEBUGVAL( a, b, c );
  DEBUGVAL( log10(1000) - 2 );
  DEBUGVAL( millis() );
  DEBUGVAL( Serial.read() );
  someFunction(42);
  DEBUG("");
  delay(5000);
}

ohne Gewähr

und hier der link. sende ich beim nächsten mal gleich mit.

lucianbetke:
und hier der link.

Und im example Arduino-Debugging/Example.ino at master · tttapa/Arduino-Debugging · GitHub stehts wie von combie schon beschrieben...

Klappt danke.
Jetzt vereinfache ich das programm, aber ich bekomme das Ergebnis 2 mal:
a = 1, b = 2, c = 3
a = 1, b = 2, c = 3

#define PRINTSTREAM_FALLBACK
#define DEBUG_OUT Serial
#include "Debug.hpp"

void setup() {
  Serial.begin(115200);
  while (!Serial);

  int a = 1, b = 2, c = 3;
  DEBUGVAL( a, b, c );
}

void loop() {

}

lucianbetke:
Klappt danke.
Jetzt vereinfache ich das programm, aber ich bekomme das Ergebnis 2 mal:
a = 1, b = 2, c = 3
a = 1, b = 2, c = 3

Ich bekomme nur eine Zeile.

bitte, sag, dass das ein witz ist. ansonsten bin ich verzweifelt.

Dein github-Link führt übrigens auf eine veraltete Version, die nicht weiter supportet wird.
Dort ist ein Link zur aktuellen Version, die in ein größeres Projekt eingebunden ist.

Gruß Tommy

oh man das wird immer peinlicher für mich. egal bin neu.
gelöst, mit einer baudrate von 9600 klappt alles. aber warum naja
was anderes, kann man in dem thread auch anzeigen, dass sich das problem auch erledigt hat?
muss sich ja nicht jeder meine kamellen durchlesen die sich bei mir dann doch erledigt haben.

lucianbetke:
gelöst, mit einer baudrate von 9600 klappt alles. aber warum naja

???
115200.
Genau 1 Zeile
Genau 1 Originaler ARDUINO UNO.

  • 1.8.8 Portable
In file included from /tmp/arduino_modified_sketch_756838/sketch_feb10f.ino:3:0:
/home/user/arduino-1.8.8_portable/portable/sketchbook/libraries/Arduino-Debugging-master/Debug.hpp:76:62: note: #pragma message: Debugging enabled on output Serial
 #pragma message("Debugging enabled on output " STR(DEBUG_OUT))
                                                              ^
Compiling libraries...
Compiling library "Arduino-Debugging-master"
Compiling core...
Using precompiled core: /tmp/arduino_cache_396257/core/core_arduino_avr_uno_9ff3261709206d3b8c694d2ee0c88fec.a
Linking everything together...
/home/user/arduino-1.8.8_portable/hardware/tools/avr/bin/avr-gcc -Wall -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o /tmp/arduino_build_650305/sketch_feb10f.ino.elf /tmp/arduino_build_650305/sketch/sketch_feb10f.ino.cpp.o /tmp/arduino_build_650305/../arduino_cache_396257/core/core_arduino_avr_uno_9ff3261709206d3b8c694d2ee0c88fec.a -L/tmp/arduino_build_650305 -lm
/home/user/arduino-1.8.8_portable/hardware/tools/avr/bin/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 /tmp/arduino_build_650305/sketch_feb10f.ino.elf /tmp/arduino_build_650305/sketch_feb10f.ino.eep
/home/user/arduino-1.8.8_portable/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /tmp/arduino_build_650305/sketch_feb10f.ino.elf /tmp/arduino_build_650305/sketch_feb10f.ino.hex
Bibliothek Arduino-Debugging-master im Ordner: /home/user/arduino-1.8.8_portable/portable/sketchbook/libraries/Arduino-Debugging-master (legacy) wird verwendet
/home/user/arduino-1.8.8_portable/hardware/tools/avr/bin/avr-size -A /tmp/arduino_build_650305/sketch_feb10f.ino.elf
Der Sketch verwendet 1928 Bytes (5%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 190 Bytes (9%) des dynamischen Speichers, 1858 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
/home/user/arduino-1.8.8_portable/hardware/tools/avr/bin/avrdude -C/home/user/arduino-1.8.8_portable/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyACM0 -b115200 -D -Uflash:w:/tmp/arduino_build_650305/sketch_feb10f.ino.hex:i 

avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/home/user/arduino-1.8.8_portable/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/home/user/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyACM0
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 4.4
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "/tmp/arduino_build_650305/sketch_feb10f.ino.hex"
avrdude: writing flash (1928 bytes):

Writing | ################################################## | 100% 0.33s

avrdude: 1928 bytes of flash written
avrdude: verifying flash memory against /tmp/arduino_build_650305/sketch_feb10f.ino.hex:
avrdude: load data flash data from input file /tmp/arduino_build_650305/sketch_feb10f.ino.hex:
avrdude: input file /tmp/arduino_build_650305/sketch_feb10f.ino.hex contains 1928 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.26s

avrdude: verifying ...
avrdude: 1928 bytes of flash verified

avrdude done.  Thank you.

@Tommy56 - Danke für den Hinweis, mal sehen, ob die Warnung weg geht.

lucianbetke:
kann man in dem thread auch anzeigen, dass sich das problem auch erledigt hat?

Ja, kann man.
Dazu den Eröffnungsbeitrag editieren und im Titel ein [gelöst] hinzufügen.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.