Гаджеты боковой панели Окон отладки без Visual Studio

Я пытаюсь создать гаджет боковой панели без использования Visual Studio. Я навел справки о способах отладить их, но все говорит, что Visual Studio отладчик JIT является единственным способом сделать это.

Кто-либо смог отладить гаджеты боковой панели без Visual Studio?

8
задан bshacklett 17 February 2010 в 20:23
поделиться

2 ответа

В течение многих лет я не использовал 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), в котором произошла ошибка.

Удачи в отладке, и не забывайте не оставлять ни одного окна.подсказки или MsgBoxes при публикации гаджета!

16
ответ дан 5 December 2019 в 06:37
поделиться

В Windows 7 новый реестр был добавлен ключ, который отображает ошибки сценария во время выполнения на данном ПК:

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

Если это значение установлено, вы будете видеть диалоговые окна при возникновении ошибок сценария.

9
ответ дан 5 December 2019 в 06:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: