• Login
sketchucation logo sketchucation
  • Login
πŸ€‘ SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

Win32 output debugging

Scheduled Pinned Locked Moved Developers' Forum
9 Posts 4 Posters 2.9k Views
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.
  • J Offline
    Jim
    last edited by 26 Sept 2010, 05:21

    An alternative way for debugging on Windows machines using Win32API.so.

    You need a system debug viewer running such as DebugView and output goes to the debugger window. Also,

    @unknownuser said:

    If the application has no debugger and the system debugger is not active, OutputDebugString does nothing.

    This could also be used with Al's trace ruby messages technique so instead of output going to files ,it goes to the debugger.

    Come to think of it, something like this should be part of the api.

    
    OutputDebugString = Win32API.new("kernel32.dll", "OutputDebugString", ['P'], 'V')
    
    def opd(s="\0")
        s = s.to_s + "\0"
        OutputDebugString.call(s)
    end
    
    opd(Time.now)
    
    

    Hi

    1 Reply Last reply Reply Quote 0
    • T Offline
      thomthom
      last edited by 26 Sept 2010, 10:44

      This is excellent! πŸ‘ πŸ‘

      @jim said:

      Come to think of it, something like this should be part of the api.

      Double Plus Good!

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

      1 Reply Last reply Reply Quote 0
      • C Offline
        Chris Fullmer
        last edited by 26 Sept 2010, 16:45

        How would I use this Jim? I add that code to a script while I'm writing it. And do do what with it? It just does everything on its own?

        Lately you've been tan, suspicious for the winter.
        All my Plugins I've written

        1 Reply Last reply Reply Quote 0
        • J Offline
          Jim
          last edited by 26 Sept 2010, 23:30

          In DebugView, you can clear the debugger window by outputting the string "DBGVIEWCLEAR"

          Hi

          1 Reply Last reply Reply Quote 0
          • T Offline
            tbd
            last edited by 27 Sept 2010, 07:25

            Jim: are you working for Render Plus now ? πŸ˜‰

            SketchUp Ruby Consultant | Podium 1.x developer
            http://plugins.ro

            1 Reply Last reply Reply Quote 0
            • T Offline
              thomthom
              last edited by 27 Sept 2010, 07:56

              I think this thread should be sticky... or in the sticky thread...

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

              1 Reply Last reply Reply Quote 0
              • J Offline
                Jim
                last edited by 28 Sept 2010, 02:12

                It turns out this OutputDebugString example is straight out of the Pickaxe book.

                Hi

                1 Reply Last reply Reply Quote 0
                • T Offline
                  thomthom
                  last edited by 13 Oct 2010, 18:34

                  class CL_rps_console < Sketchup::Console

                  Sketchup::Console ❓ ❓

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

                  1 Reply Last reply Reply Quote 0
                  • J Offline
                    Jim
                    last edited by 1 Dec 2010, 13:23

                    Here's what I came up with. Just make sure it is alphabetically the first file in Plugins in order to capture the earliest output.

                    
                    require 'Win32API'
                    
                    class CL_rps_console < Sketchup;;Console
                        OutputDebugString = Win32API.new("kernel32.dll", "OutputDebugString", ['P'], 'V')
                        def write(smess="\0")
                            smess = smess.to_s + "\0"
                            OutputDebugString.call(smess)
                        end
                    end
                    
                    # redefine standard output to our new class
                    $old_stdout = $stdout # in case you want to turn off traces
                    $stdout = CL_rps_console.new
                    $stderr = $stdout
                    puts "-" * 40
                    puts Time.now
                    puts "Starting SketchUp"
                    puts "-" * 40
                    
                    
                    
                    

                    Hi

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

                    Advertisement