sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    How to debug?

    Scheduled Pinned Locked Moved Developers' Forum
    46 Posts 13 Posters 78.3k Views 13 Watching
    Loading More Posts
    • 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.
    • thomthomT Offline
      thomthom
      last edited by

      @cleverbeans said:

      Thirdly, I will test my code after almost every change. There is no harm in testing the method after changing just a single line of code, particularly when you're working in a scripted language like Ruby and don't have to recompile. I found that if I deferred debugging till I had "something worth running" I'd often find a chain of bugs which would obscure the real error behind the scenes. You catch a lot of little things like typos, missing brackets, type mismatches and such which are easy to quash. Also, I find it's easier to debug what I'm doing while it's fresh in my mind. If I find a semantic error in code I wrote even an hour earlier it's not fresh and I have to figure out what I was doing at that point again to see where it went wrong.

      Yes, test often. So many times I've tripped over a bug do to a typo I made to a quick change. If I code larger chunks, the higher the likely hood of a typo bug or something silly sneaking its way in. (I'm often surprised if there is no errors after I've written a longer section of code. I begin to think that there must be something seriously wrong I haven't spotted yet.)

      Thomas Thomassen β€” SketchUp Monkey & Coding addict
      List of my plugins and link to the CookieWare fund

      1 Reply Last reply Reply Quote 0
      • liquid98L Offline
        liquid98
        last edited by

        I know, I'm a complete outsider in this discussion, but I have a question and an idea.

        My question: In what debugging situations is it necessary to restart Sketchup?

        And my idea:

        A plugin that resets Sketchup to it's initial state. So you never have to restart SU or manually reload a plugin to test a script.

        Things that flourish fall into decay. This is not-Tao, And what is not-Tao soon ends ~ Lao tse

        1 Reply Last reply Reply Quote 0
        • TIGT Offline
          TIG Moderator
          last edited by

          @liquid98 said:

          I know, I'm a complete outsider in this discussion, but I have a question and an idea.

          My question: In what debugging situations is it necessary to restart Sketchup?

          And my idea:

          A plugin that resets Sketchup to it's initial state. So you never have to restart SU or manually reload a plugin to test a script.

          If your script makes menu items or toolbars you will [usually] have trapped it with file_loaded() so you don't get multiple entries... so if you change those reloading the script won't affect those... but otherwise any code changes are usually reflected in the tool's operation without a need to restart if you use load "myscript.rb"....... if you tool has decent start/commit blocks to undo what it's just done [incorrectly] you rarely need to restart Sketchup after tweaking your code...

          TIG

          1 Reply Last reply Reply Quote 0
          • thomthomT Offline
            thomthom
            last edited by

            @liquid98 said:

            My question: In what debugging situations is it necessary to restart Sketchup?

            In additions to what TIG mentioned in regard to menus, you might want to restart after doing some major refactoring where you might have renamed methods etc. You might still be calling the old method.
            And there might be things your plugin has to do at startup, such as some observers. But it belong to the rare cases.

            Thomas Thomassen β€” SketchUp Monkey & Coding addict
            List of my plugins and link to the CookieWare fund

            1 Reply Last reply Reply Quote 0
            • liquid98L Offline
              liquid98
              last edited by

              Thanx guys,

              I'm working with dynamic screen notes and dynamic tooltips, and have to restart SU all the time to get them
              refreshed.. But that's not common for most plugins I suppose.

              Things that flourish fall into decay. This is not-Tao, And what is not-Tao soon ends ~ Lao tse

              1 Reply Last reply Reply Quote 0
              • Dan RathbunD Offline
                Dan Rathbun
                last edited by

                A tooltip for a UI::Command instance object can be changed at ANY time, simply by calling the instance object's tooltip= method, with an argument that is different than what the current tooltip text is.

                This means that you must make and keep available, a reference (sloppily called a variable,) to that instance object, so you can later call it's instance methods.

                You can also change the status bar text and the validation proc dynamically in the same way.

                I'm not here much anymore.

                1 Reply Last reply Reply Quote 0
                • T Offline
                  tomot
                  last edited by

                  Its enough to make a grown man cry! It only took me 3 hours to find the 2 letter typing error. I hope this is not age related? 😳 There was no hint of a problem in the Ruby console, Notepad++ or SciTE. Its enough to make one 🀒

                  if( @stud != "YES" )   
                      #...get the number of joists required for the related @vec/@joc
                      #...@soc = joist on center spacing 
                      @num_stud=((@vec/@soc)+1).to_i 
                      
                      definitions=model.definitions
                      count=definitions.add
                      entities=count.entities
                     
                      #...draw 1st stud
                      base=entities.add_face(@pt1, @pt3, @pt33, @pt11) 
                      base=entities.add_line(@pt1, @pt33)
                      base=entities.add_line(@pt3, @pt11)
                      
                      #...transform stud location 
                      t=Geom;;Transformation.translation(Geom;;Vector3d.new(0, 0, 0))
                      entities=model.active_entities
                      
                      entities.add_instance(count, t)
                      
                      #...copy studs to their new locations
                      i = 1
                      while i < @num_stud
                         # Transformation
                         i = i + 1
                         vec = @pt5 - @pt6 # width between which studs are to be drawn
                         vec.length = @soc*(i-1)
                         t=Geom;;Transformation.translation(Geom;;Vector3d.new(0,@soc*(i-1), 0))
                         t=Geom;;Transformation.translation(vec)
                         entities.add_instance(count, t)
                      end
                  end if # end if @stud
                  

                  I feel better now!

                  [my plugins](http://thingsvirtual.blogspot.ca/)
                  tomot

                  1 Reply Last reply Reply Quote 0
                  • Dan RathbunD Offline
                    Dan Rathbun
                    last edited by

                    line 7: no argument for the instance method DefinitionsList.add()

                    I'm not here much anymore.

                    1 Reply Last reply Reply Quote 0
                    • T Offline
                      tomot
                      last edited by

                      @dan rathbun said:

                      line 7: no argument for the instance method DefinitionsList.add()

                      No that's not it ! ..... nice try!..... try again?

                      [my plugins](http://thingsvirtual.blogspot.ca/)
                      tomot

                      1 Reply Last reply Reply Quote 0
                      • J Offline
                        Jim
                        last edited by

                        end if!

                        Hi

                        1 Reply Last reply Reply Quote 0
                        • Dan RathbunD Offline
                          Dan Rathbun
                          last edited by

                          @tomot said:

                          @dan rathbun said:

                          line 7: no argument for the instance method DefinitionsList.add()

                          No that's not it ! ..... nice try!..... try again?

                          Wow... that's strange! An empty argument creates a new definition, whose name is "Component". The API does not mention this!!!

                          And Jim.. got it correct... although I would think Ruby would issue a ScriptError, something like "blah blah blah...`end' expected"

                          I'm not here much anymore.

                          1 Reply Last reply Reply Quote 0
                          • T Offline
                            tomot
                            last edited by

                            yup! Jim is right!. So back to the initial subject, is there a debug routine for such errors?
                            your editor should be causing a high pitch sound for end if or at least a blicking, or bouncing simile. πŸŽ‰

                            [my plugins](http://thingsvirtual.blogspot.ca/)
                            tomot

                            1 Reply Last reply Reply Quote 0
                            • J Offline
                              Jim
                              last edited by

                              I was going to suggest checking the syntax, but you would need to have Ruby version 1.8.6 installed (not a bad idea if you are developing plugins.)

                              $ ruby -c plugin.rb plugin.rb:32: syntax error, unexpected $end

                              Hi

                              1 Reply Last reply Reply Quote 0
                              • T Offline
                                tomot
                                last edited by

                                @jim said:

                                I was going to suggest checking the syntax, but you would need to have Ruby version 1.8.6 installed (not a bad idea if you are developing plugins.)

                                $ ruby -c plugin.rb plugin.rb:32: syntax error, unexpected $end

                                Jim: you have helped me with a few rubies I have posted here in the past,
                                would you please elaborate on I would install Ruby version 1.8.6 within the current Ruby/SU environment.
                                Currently I simply use NotePad ++ or SciTE to edit and develop my SketchUp Rubies.

                                [my plugins](http://thingsvirtual.blogspot.ca/)
                                tomot

                                1 Reply Last reply Reply Quote 0
                                • Dan RathbunD Offline
                                  Dan Rathbun
                                  last edited by

                                  Ruby Binary Installer:

                                  • Ruby (v1.8.6-p287) Windows One-Click Installer

                                  then use...

                                  Ruby LOAD PATHs script (Win32) : ver 3.0.1

                                  I'm not here much anymore.

                                  1 Reply Last reply Reply Quote 0
                                  • T Offline
                                    tomot
                                    last edited by

                                    @dan rathbun said:

                                    @tomot said:

                                    @dan rathbun said:

                                    line 7: no argument for the instance method DefinitionsList.add()

                                    No that's not it ! ..... nice try!..... try again?

                                    Wow... that's strange! An empty argument creates a new definition, whose name is "Component". The API does not mention this!!!

                                    And Jim.. got it correct... although I would think Ruby would issue a ScriptError, something like "blah blah blah...`end' expected"

                                    Dan, FYI, I have used that particular code several times to space entities between 2 know points, equally. I don't recall who helped me with the original code, many years ago.

                                    [my plugins](http://thingsvirtual.blogspot.ca/)
                                    tomot

                                    1 Reply Last reply Reply Quote 0
                                    • T Offline
                                      tomot
                                      last edited by

                                      @jim said:

                                      Ruby Toolbar started - on Windows, it can open/close the Ruby Console, Clear it, and load/reload a file.

                                      Jim: I get the following error when starting SU


                                      error.jpg

                                      [my plugins](http://thingsvirtual.blogspot.ca/)
                                      tomot

                                      1 Reply Last reply Reply Quote 0
                                      • Dan RathbunD Offline
                                        Dan Rathbun
                                        last edited by

                                        You need WIn32API.so

                                        v186_p287_so.zip

                                        I'm not here much anymore.

                                        1 Reply Last reply Reply Quote 0
                                        • B Offline
                                          brian_concannon
                                          last edited by

                                          I have written a debugger for Sketchup plugins with watches and breakpoints. Why isn't such a debugger already available? Would it be a good contribution to the community? The breakpoints based on watched variable changes seem like the best part.

                                          Download the user guide that I attached.

                                          It needs some work yet, as it processes only the Ruby snytax that I have
                                          programmed with myself. It is a VB6 app. It would be free.

                                          Quote message
                                          Face2Face plugin - autoextrusion between faces
                                          Sent: Wed Dec 21, 2011 4:58 pm
                                          by brian_concannon

                                          TIG,

                                          I posted the plugin as you suggested, in the Resources/Plugins forum. It is being downloaded like crazy!

                                          I hope you make it part of your Edgedraw plugins somehow.

                                          anyway, I have written a debugger for Sketchup plugins with watches and breakpoints. Why isn't such a debugger already available? Would it be a good contribution to the community?

                                          Quote message
                                          Re: Face2Face plugin - autoextrusion between faces
                                          Sent: Wed Dec 21, 2011 5:16 pm
                                          From: TIG
                                          To: brian_concannon

                                          It would probably be a useful adjunct.
                                          Why not post in the Developers' forum with a new thread.
                                          You don't need to post the whole of your code, just some ideas to get a discussion rolling...
                                          Thomthom, Jim and Dan are more in debugging etc than I am. I manually slog through with my own return nils, breaks, testing puts, UI.messageboxe, refreshes etc till I get it to work


                                          setup file (text)

                                          1 Reply Last reply Reply Quote 0
                                          • thomthomT Offline
                                            thomthom
                                            last edited by

                                            @brian_concannon said:

                                            I manually slog through with my own return nils, breaks, testing puts, UI.messageboxe, refreshes etc till I get it to work

                                            That's my method of debugging as well. A debugger would be welcome. There is one out there already SuRDebug: http://code.google.com/p/surdebug/wiki/SuRDebug

                                            I never got around to fully make it work... 😞

                                            Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                            List of my plugins and link to the CookieWare fund

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 2 / 3
                                            • First post
                                              Last post
                                            Buy SketchPlus
                                            Buy SUbD
                                            Buy WrapR
                                            Buy eBook
                                            Buy Modelur
                                            Buy Vertex Tools
                                            Buy SketchCuisine
                                            Buy FormFonts

                                            Advertisement