【问题标题】:Debugging Windows sidebar gadgets without Visual Studio在没有 Visual Studio 的情况下调试 Windows 侧边栏小工具
【发布时间】:2011-01-18 01:15:23
【问题描述】:

我正在尝试在不使用 Visual Studio 的情况下创建侧边栏小工具。我四处寻找调试它们的方法,但一切都表明 Visual Studio JIT 调试器是唯一的方法。

有没有人能够在没有 Visual Studio 的情况下调试侧边栏小工具?

【问题讨论】:

    标签: windows-desktop-gadgets


    【解决方案1】:

    多年来,我没有使用 Visual Studio 来开发小工具。有几种方法可以在没有它的情况下调试小工具,只是没有那么广泛。例如,如果没有适当的调试器附加到进程,您就不能使用debugger; 命令。你可以做的是使用像DebugView这样的程序来捕获System.Debug.outputString()方法输出的消息:

    function test ()
    {
        System.Debug.outputString("Hello, I'm a debug message");
    }
    

    这允许您在代码的某些阶段输出变量转储和其他有用的信息,以便您可以随意跟踪它。

    作为替代方案,您可以使用window.prompt() 滚动您自己的调试/脚本暂停消息。 alert() 已为小工具禁用,confirm() 被覆盖以始终返回 true,但它们一定忽略了 prompt()

    function test ()
    {
         // execute some code
    
         window.prompt(someVarToOutput, JSON.stringify(someObjectToExamine));
    
         // execute some more code
    }
    

    如果您想在代码执行期间检查对象的状态,JSON.stringify() 方法真的很有帮助。

    除了window.prompt,您还可以使用VBScript MsgBox()函数:

    window.execScript( //- Add MsgBox functionality for displaying error messages
          'Function vbsMsgBox (prompt, buttons, title)\r\n'
        + ' vbsMsgBox = MsgBox(prompt, buttons, title)\r\n'
        + 'End Function', "vbscript"
    );
    
    vbsMsgBox("Some output message", 16, "Your Gadget Name");
    

    最后,您可以使用window.onerror 事件处理程序在您的脚本中捕获所有错误。

    function window.onerror (msg, file, line)
    {
        // Using MsgBox
        var ErrorMsg = 'An error has occurred'+(line&&file?' in '+file+' on line '+line:'')+'.  The message returned was:\r\n\r\n'+ msg + '\r\n\r\nIf the error persists, please report it.';
        vbsMsgBox(ErrorMsg, 16, "Your Gadget Name");
    
        // Using System.Debug.outputString
        System.Debug.outputString(line+": "+msg);
    
        // Using window.prompt
        window.prompt(file+": "+line, msg);        
    
        // Cancel the default action
        return true;
    }
    

    window.onerror 事件甚至可以让您输出发生错误的行号和文件(仅在 IE8 中准确)。

    祝您调试顺利,记住不要在发布小工具时留在任何 window.prompts 或 MsgBoxes 中!

    【讨论】:

    • 非常有用。谢谢你。我需要一个库来使用 JSON 对象还是它是 Windows 小工具宿主环境的一部分?
    • @bshacklett:它内置在 IE8 中,但您的小工具需要处于 IE8 模式。您还可以从 json.org/js.html 获取解析器和字符串化器
    • 它们是仅仅因为在系统上安装了 IE8 而在 IE8 模式下运行,还是我必须指定?
    • 您可以使用元标记指定 IE8 模式。见blogs.msdn.com/ie/archive/2008/06/10/…
    • 应用 DebugView 在查看 XMLHttpRequest 响应时非常有用。谢谢。
    【解决方案2】:

    在 Windows 7 中添加了一个新的注册表项,该注册表项在给定 PC 上运行时显示脚本错误:

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Sidebar]
    "ShowScriptErrors"=dword:00000001
    

    设置该值后,当发生脚本错误时,您会看到对话框。

    【讨论】:

    • 我看不到任何对话框弹出。还需要什么才能使其正常工作?
    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2018-06-27
    相关资源
    最近更新 更多