Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Development
  3. debug output

debug output

Scheduled Pinned Locked Moved Development
12 Posts 5 Posters 7.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    marceltrapman
    Mod
    wrote on last edited by
    #1

    Is it save to do something like:

    gw.debug("%s output", "short");

    The reason I ask: I would like to avoid having to comment or uncomment output that I need/use for debugging purposes :)

    Fulltime Servoy Developer
    Parttime Moderator MySensors board

    I use Domoticz as controller for Z-Wave and MySensors (previously Indigo and OpenHAB).
    I have a FABtotum to print cases.

    1 Reply Last reply
    0
    • H Offline
      H Offline
      hek
      Admin
      wrote on last edited by
      #2

      debug() is a #define using the debugPrint-method which isn't public. You'll have to modify the class to be able to do it.

      1 Reply Last reply
      0
      • M Offline
        M Offline
        marceltrapman
        Mod
        wrote on last edited by
        #3

        @hek Is there a reason why it is not public?

        Fulltime Servoy Developer
        Parttime Moderator MySensors board

        I use Domoticz as controller for Z-Wave and MySensors (previously Indigo and OpenHAB).
        I have a FABtotum to print cases.

        1 Reply Last reply
        0
        • M Offline
          M Offline
          marceltrapman
          Mod
          wrote on last edited by marceltrapman
          #4

          @hek let me change my previous question :)
          Is it possible to make this public by default?
          I would like to avoid changing the libs and it would also make my library more accessible...
          Or is there an important reason not to do this?

          Fulltime Servoy Developer
          Parttime Moderator MySensors board

          I use Domoticz as controller for Z-Wave and MySensors (previously Indigo and OpenHAB).
          I have a FABtotum to print cases.

          H 1 Reply Last reply
          0
          • M marceltrapman

            @hek let me change my previous question :)
            Is it possible to make this public by default?
            I would like to avoid changing the libs and it would also make my library more accessible...
            Or is there an important reason not to do this?

            H Offline
            H Offline
            hek
            Admin
            wrote on last edited by
            #5

            @marceltrapman said:

            Is it possible to make this public by default?

            Yes

            I would like to avoid changing the libs and it would also make my library more accessible...
            Or is there an important reason not to do this?

            I don't know if debug prints is part of the core things we would like to expose for a communication library. It doesn't really fit the profile ;). We might decide to change or remove this without any notice and your sketches would stop working.

            There are probably much better debug print libraries available. Another option is just to copy the code to you own marcel-utility library. :)

            Y 1 Reply Last reply
            0
            • H hek

              @marceltrapman said:

              Is it possible to make this public by default?

              Yes

              I would like to avoid changing the libs and it would also make my library more accessible...
              Or is there an important reason not to do this?

              I don't know if debug prints is part of the core things we would like to expose for a communication library. It doesn't really fit the profile ;). We might decide to change or remove this without any notice and your sketches would stop working.

              There are probably much better debug print libraries available. Another option is just to copy the code to you own marcel-utility library. :)

              Y Offline
              Y Offline
              Yveaux
              Mod
              wrote on last edited by
              #6

              @hek said:

              I don't know if debug prints is part of the core things we would like to expose for a communication library.

              Good point hek! :+1:
              Stick to the subject ;-)

              http://yveaux.blogspot.nl

              1 Reply Last reply
              0
              • M Offline
                M Offline
                marceltrapman
                Mod
                wrote on last edited by
                #7

                @hek now that I think of it I have access to MyConfig.h anyway so creating my own stuff is basically a no-brainer :)

                Fulltime Servoy Developer
                Parttime Moderator MySensors board

                I use Domoticz as controller for Z-Wave and MySensors (previously Indigo and OpenHAB).
                I have a FABtotum to print cases.

                B 1 Reply Last reply
                0
                • M marceltrapman

                  @hek now that I think of it I have access to MyConfig.h anyway so creating my own stuff is basically a no-brainer :)

                  B Offline
                  B Offline
                  BulldogLowell
                  Contest Winner
                  wrote on last edited by
                  #8

                  @marceltrapman

                  Why not just drop in your own debug flag:

                  boolean myBugFlag = true;
                  

                  then add it to your code

                  if (myBugFlag) Serial.print("Expect to see something here...");
                  
                  Y 1 Reply Last reply
                  0
                  • B BulldogLowell

                    @marceltrapman

                    Why not just drop in your own debug flag:

                    boolean myBugFlag = true;
                    

                    then add it to your code

                    if (myBugFlag) Serial.print("Expect to see something here...");
                    
                    Y Offline
                    Y Offline
                    Yveaux
                    Mod
                    wrote on last edited by
                    #9

                    @BulldogLowell Here's Macro-guy again ;-)

                    How about (at the top of your sketch):

                    #ifdef DEBUG
                    #define debug(x)     Serial.print(x)
                    #define debugln(x)   Serial.println(x)
                    #else
                    #define debug(x)     // define empty, so macro does nothing
                    #define debugln(x)
                    #endif 
                    

                    Use like regular Serial.print throughout your code:

                    debug("This is some debug text\n");
                    debugln("This is some debug text with newline");
                    

                    When you #define DEBUG in your code the debug text will be output to the serial port, when you don't define it the debug output will not be compiled in (saves some flash/ram, but doesn't allow dynamic switching of debug statements -- this also can be done though)

                    http://yveaux.blogspot.nl

                    1 Reply Last reply
                    0
                    • B Offline
                      B Offline
                      BulldogLowell
                      Contest Winner
                      wrote on last edited by
                      #10

                      Yes, even better.

                      Also to help avoid the ram issue, building on that, just use the F() macro to put all if your text constants into Flash

                      DeBugln(F("here is your example."));
                      
                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        marceltrapman
                        Mod
                        wrote on last edited by
                        #11

                        Guys, thanks for thinking with me.

                        I like to just use the DEBUG variable as defined in config.h.

                        And @Yveaux nice thinking but I want to be able to use formatting so I am going to do something similar to what @hek uses.

                        And @BulldogLowell I use PCNL(...) right now. Any (dis-)advantage of either one that you can think of?

                        Fulltime Servoy Developer
                        Parttime Moderator MySensors board

                        I use Domoticz as controller for Z-Wave and MySensors (previously Indigo and OpenHAB).
                        I have a FABtotum to print cases.

                        1 Reply Last reply
                        0
                        • Z Offline
                          Z Offline
                          Zeph
                          Hero Member
                          wrote on last edited by Zeph
                          #12

                          Just in case it's useful to somebody, my current approach is:

                          // Debug PRinting with LiNefeed and maybe Flash strings or 2nd mode param
                          #ifdef DEBUG
                          #define DPR(x)      Serial.print(x)
                          #define DPR2(x,m)   Serial.print(x,m)
                          #define DPRLIN()    Serial.println()
                          #define DPRLN(x)    Serial.println(x)
                          #define DPRLN2(x,m) Serial.println(x,m)
                          // saving string in Flash ProgMem
                          #define DPRF(x)     Serial.print(F(x))
                          #define DPRLNF(x)   Serial.println(F(x))
                          #else
                          #define DPR(x)
                          #define DPR2(x,m)
                          #define DPRLIN()
                          #define DPRLN(x)
                          #define DPRLN2(x,m)
                          #define DPRF(x)
                          #define DPRLNF(x)
                          #endif
                          

                          This allows substitute for println() with no args, and for print(val, HEX) type modes as well. I got tired of typing the extra F(...) so added macros to incorporate that too.

                          You can make this into a library to include as a .h file - as a note, you still need a corresponding .c file even if empty.

                          1 Reply Last reply
                          0

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Register Login
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          18

                          Online

                          12.1k

                          Users

                          11.2k

                          Topics

                          113.4k

                          Posts


                          Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • MySensors
                          • OpenHardware.io
                          • Categories
                          • Recent
                          • Tags
                          • Popular