Русские Блоги
Отладчик браузера Chrome имеет проблему, вызванную отладчиком: \\ VM
Используя jquery для привязки кнопок, иногда это не срабатывает, почему? Начните отладку с этого вопроса:
Сначала откройте инструмент отладки в Chrome и обнаружите, что вы не можете добавлять точки останова, он перейдет к номеру vm +
Из источника выясняется, что папка js в проекте исчезла:
А. Что мне делать, если я не могу найти источник? Посмотрите на это с другой стороны:
б. Щелкните "Pretty Print", и появится форматированный файл. Этот файл можно отладить с помощью точек останова:
c, F11, Shift + F11 найдено:
Программа много раз входит в файл jquery. Может проблема здесь, остановись здесь.
г. Вернемся к источнику проблемы, почему не отображается файл js?
Оказывается, в коде я использовал метод jquery getScript для задержки загрузки.
Вышел исходник js файла:
Ошибка в предыдущей программе: посмотрите события, привязанные jquery, восстановите ОК!
Я попробовал снова с ленивой загрузкой jquery, и она возобновилась нормально!
что случилось? Время от времени пропадает, в чем проблема?
В этот момент я решил временно отложить этот вопрос и продолжить работу.
(Ps: неожиданность проблемы и сомнение в jquery — все из-за недостаточного понимания.)
Интеллектуальная рекомендация
Заметки для изучения регулярных выражений (1) базовые знания
1. Что такое регулярное выражение? Регулярное выражение — это формула, в которой используется определенный шаблон для соответствия типу строки. Во-вторых, состав регулярных выражений В PHP регулярные .
Глава 4 Учебные Примечания
Основной тип и тип ссылки Базовый тип: не определен, нуль, логическое, число, строка. Эти пять основных типов данных являются <цвет шрифта = «красный»> Значение </ FONT> Доступ.
mysql one: базовые знания и простой запрос
оглавление Базовые знания База данных, использованная в этой статье Простой запрос Запрос условий Используйте реляционные и логические операторы Нечеткий запрос Сортировать запрос Базовые знания База .
Инструмент разработки Chrome: [VM] файл из javascript
Я добавил точку останова в свой файл javascript (jaydata.js) и нажимал «перейти к следующему вызову функции.» Когда он добрался до строки, которая была:
появился еще один файл под названием «[VM] (8312)». Я продолжал нажимать «перейти к следующему вызову функции», и теперь мой экран:
что это за странные и таинственные скрипты под названием «[VM] (XXXX » и откуда они берутся?
8 ответов
[VM] (scriptId) не имеет особого смысла. Это фиктивное имя, чтобы помочь нам отличить код, который непосредственно не привязан к имени файла, например, код, созданный с помощью eval и друзей.
в прошлом, все эти сценарии были просто помечены (program) .
Если вам интересно, просто посмотреть «[VM]» в исходном коде Chromium, вы обнаружите, что эти цифры не имеют существенного значения вне инструменты разработчика.
обновление 2015-06-25
[VM] (scriptId) была переименована в VMscriptId некоторое время назад, а вот прямая ссылка на результат поиска в случае, если значение снова меняется.
при использовании eval javascript попадает в отладчик Chrome VMs. Чтобы просмотреть js, созданный с помощью eval в источниках отладчика Chrome, установите этот атрибут в конце (спасибо Splaktar) js:
всякий раз, когда вы загружаете HTML-контент через AJAX, и этот контент содержит <script> теги, скрипт будет оценен с помощью eval () и распознан в представлении источников Chrome как новый файл, начинающийся с «VM». Вы всегда можете перейти на вкладку Сеть, найти запрос AJAX и просмотреть ответ HTML полностью, включая ваш скрипт.
Я обнаружил, что VM генерируется из некоторых расширений Chrome-они вставляют CSS / JS на страницу, и Chrome использует файлы VM для его запуска.
когда вы отлаживаете источник дочернего окна (iframe), который впоследствии выгружается, ваш исходный файл также получит префикс VM и желтый фон.
я столкнулся с такой же проблемой. Проблема в том, что код моего приложения был рассмотрен blackboxes случайно. Когда я попытался войти в код, он продолжал открывать эти VMXXXX вкладки.
после удаления настройки blackbox для JS-файла моего приложения я мог бы успешно выполнить свой код.
Если вы хотите отлаживать программно введенные JS-файлы в chrome, вы можете использовать debugger; заявление, это быстрее, чем найти, где ваш скрипт, а также быстрее, чем создание файла с sourceurl.
он работает как точка останова и автоматически определяет ваш код на вкладке источника chrome, где бы вы ни использовали debugger; заявление.
обратите внимание, что источник сценарий VMXXX файл.
У меня была такая же проблема, когда я отлаживал свое угловое приложение. Видя слишком много сценариев VM, которые не могли быть blackboxed действительно занимает много времени для отладки. Я скорее выбрал mozilla / IE explorer для отладки.
Почему VM Debugger в Visual Studio 2008 выдает сообщение «не удалось обнаружить запускаемый проект»?
У меня проблема с VM-Debugger в Visual Studio 2008 (VMWare Workstation 6.5.3). Всегда, когда я пытаюсь запустить отладку виртуальной машины, отладчик сообщает мне следующее:
У меня всего один стартап-проект, но в моем решении есть еще несколько проектов.
Журнал отладчика говорит только следующее:
Журналы VMWARE-Workstation-Program ничего не говорят об ошибке.
Я уже пытался создать новое решение и добавить свои существующие проекты, но эффект тот же. Я уже переустановил плагин vmware-visual-studio-plugin. Никаких изменений не было.
Возможно, вы знаете, в чем проблема и как ее можно исправить.
2 ответы
Похоже, что это известная проблема. Однако, насколько мне известно, VMWare не выпустила исправление для этого, даже когда сообщения об этом поступали в течение двух лет.
Возможно, ваш запускаемый проект находится в папке решения. В этом случае обходной путь — разместить ваш запускаемый проект на основном уровне вашего решения.
В зависимости от структуры вашего решения это временное решение может быть полезным или не работать.
Для меня даже с этим обходным путем VM-Debugger повторно используется для работы. В моем решении VM-Debugger работал только с проектом, созданным в новом решении (самый, самый первый проект в любом решении). Поскольку мы удалили этот проект из нашего решения, что бы мы ни делали, VM-Debugger просто не работает.
«Еще одно незначительное замечание: если вы установите VMWare 6.5, он повторно отобразит F6 на« Начать отладку на виртуальной машине », в результате чего появится диалоговое окно с ошибкой« Невозможно определить текущий запускаемый проект ». Чтобы исправить это, повторно отобразите F6 обратно в Build.BuildSolution. «
Может быть, это будет полезно.
Я тоже нашел эту ссылку, но это не то, что мне нужно. Я хочу, чтобы F6 запускал отладчик vm, а не сборку решения. Но если я нажму F6 для запуска своего программного обеспечения в vm, Visual Studio выдаст мне сообщение «не удалось обнаружить . ». Проблема возникает, когда я также пытаюсь открыть vm-debugger-config в Visual Studio. — Мартин
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками visual-studio debugging virtual-machine vmware or задайте свой вопрос.
Отладка
Отладка, или debugging, — это поиск (локализация), анализ и устранение ошибок в программном обеспечении, которые были найдены во время тестирования.
Виды ошибок
Ошибки компиляции
Это простые ошибки, которые в компилируемых языках программирования выявляет компилятор (программа, которая преобразует текст на языке программирования в набор машинных кодов). Если компилятор показывает несколько ошибок, отладку кода начинают с исправления самой первой, так как она может быть причиной других.
В интерпретируемых языках (например Python) текст программы команда за командой переводится в машинный код и сразу исполняется. К моменту обнаружения ошибки часть программы уже может исполниться.
Ошибки компоновки
Ошибки связаны с разрешением внешних ссылок. Выявляет компоновщик (редактор связей) при объединении модулей программы. Простой пример — ситуация, когда требуется обращение к подпрограмме другого модуля, но при компоновке она не найдена. Ошибки также просто найти и устранить.
Ошибки выполнения (RUNTIME Error)
Ошибки, которые обнаруживают операционная система, аппаратные средства или пользователи при выполнении программы. Они считаются непредсказуемыми и проявляются после успешной компиляции и компоновки. Можно выделить четыре вида проявления таких ошибок:
- сообщение об ошибке, которую зафиксировали схемы контроля машинных команд. Это может быть переполнение разрядной сетки (когда старшие разряды результата операции не помещаются в выделенной области памяти), «деление на ноль», нарушение адресации и другие;
- сообщение об ошибке, которую зафиксировала операционная система. Она же, как правило, и документирует ошибку. Это нарушение защиты памяти, отсутствие файла с заданным именем, попытка записи на устройство, защищенное от записи;
- прекращение работы компьютера или зависание. Это и простые ошибки, которые не требуют перезагрузки компьютера, и более сложные, когда нужно выключать ПК;
- получение результатов, которые отличаются от ожидаемых. Программа работает стабильно, но выдает некорректный результат, который пользователь воспринимает за истину.
Ошибки выполнения можно разделить на три большие группы.
Ошибки определения данных или неверное определение исходных данных. Они могут появиться во время выполнения операций ввода-вывода.
К ним относятся:
- ошибки преобразования;
- ошибки данных;
- ошибки перезаписи.
Как правило, использование специальных технических средств для отладки (API-логгеров, логов операционной системы, профилировщиков и пр.) и программирование с защитой от ошибок помогает обнаружить и решить лишь часть из них.
Логические ошибки. Они могут возникать из ошибок, которые были допущены при выборе методов, разработке алгоритмов, определении структуры данных, кодировании модуля.
В эту группу входят:
- ошибки некорректного использования переменных. Сюда относятся неправильный выбор типов данных, использование индексов, выходящих за пределы определения массивов, использование переменных до присвоения переменной начального значения, нарушения соответствия типов данных;
- ошибки вычислений. Это некорректная работа с переменными, неправильное преобразование типов данных в процессе вычислений;
- ошибки взаимодействия модулей или межмодульного интерфейса. Это нарушение типов и последовательности при передаче параметров, области действия локальных и глобальных переменных, несоблюдение единства единиц измерения формальных и фактических параметров;
- неправильная реализация логики при программировании.
Ошибки накопления погрешностей. Могут возникать при неправильном округлении, игнорировании ограничений разрядной сетки, использовании приближенных методов вычислений и т.д.
Методы отладки программного обеспечения
Метод ручного тестирования
Отладка программы заключается в тестировании вручную с помощью тестового набора, при работе с которым была допущена ошибка. Несмотря на эффективность, метод не получится использовать для больших программ или программ со сложными вычислениями. Ручное тестирование применяется как составная часть других методов отладки.
Метод индукции
В основе отладки системы — тщательный анализ проявлений ошибки. Это могут быть сообщения об ошибке или неверные результаты вычислений. Например, если во время выполнения программы завис компьютер, то, чтобы найти фрагмент проявления ошибки, нужно проанализировать последние действия пользователя. На этапе отладки программы строятся гипотезы, каждая из них проверяется. Если гипотеза подтвердилась, информация об ошибке детализируется, если нет — выдвигаются новые.
Вот как выглядит процесс:
Важно, чтобы выдвинутая гипотеза объясняла все проявления ошибки. Если объясняется только их часть, то либо гипотеза неверна, либо ошибок несколько.
Метод дедукции
Сначала специалисты предлагают множество причин, по которым могла возникнуть ошибка. Затем анализируют их, исключают противоречащие имеющимся данным. Если все причины были исключены, проводят дополнительное тестирование. В обратном случае наиболее вероятную причину пытаются доказать.
Метод обратного прослеживания
Эффективен для небольших программ. Начинается с точки вывода неправильного результата. Для точки выдвигается гипотеза о значениях основных переменных, которые могли привести к ошибке. Далее на основании этой гипотезы строятся предположения о значениях переменных в предыдущей точке. Процесс продолжается до момента, пока не найдут ошибку.
Как выполняется отладка в современных IDE
Ранние отладчики, например gdb, представляли собой отдельные программы с интерфейсами командной строки. Более поздние, например первые версии Turbo Debugger, были автономными, но имели собственный графический интерфейс для облегчения работы. Сейчас большинство IDE имеют встроенный отладчик. Он использует такой же интерфейс, как и редактор кода, поэтому можно выполнять отладку в той же среде, которая используется для написания кода.
Отладчик позволяет разработчику контролировать выполнение и проверять (или изменять) состояние программ. Например, можно использовать отладчик для построчного выполнения программы, проверяя по ходу значения переменных. Сравнение фактических и ожидаемых значений переменных или наблюдение за ходом выполнения кода может помочь в отслеживании логических (семантических) ошибок.
Пошаговое выполнение — это набор связанных функций отладчика, позволяющих поэтапно выполнять код.
Шаг с заходом (step into)
Команда выполняет очередную инструкцию, а потом приостанавливает процесс, чтобы с помощью отладчика было можно проверить состояние программы. Если в выполняемом операторе есть вызов функции, step into заставляет программу переходить в начало вызываемой функции, где она приостанавливается.
Шаг с обходом (step over)
Команда также выполняет очередную инструкцию. Однако когда step into будет входить в вызовы функций и выполнять их строка за строкой, step over выполнит всю функцию, не останавливаясь, и вернет управление после ее выполнения. Команда step over позволяет пропустить функции, если разработчик уверен, что они уже исправлены, или не заинтересован в их отладке в данный момент.
Шаг с выходом (step out)
В отличие от step into и step over, step out выполняет не следующую строку кода, а весь оставшийся код функции, исполняемой в настоящее время. После возврата из функции он возвращает управление разработчику. Эта команда полезна, когда специалист случайно вошел в функцию, которую не нужно отлаживать.
Как правило, при пошаговом выполнении можно идти только вперед. Поэтому легко перешагнуть место, которое нужно проверить. Если это произошло, необходимо перезапустить отладку.
У некоторых отладчиков (таких как GDB 7.0, Visual Studio Enterprise Edition 15.5 и более поздних версий) есть возможность вернуться на шаг назад. Это полезно, если пропущена цель либо нужно повторно проверить выполненную инструкцию.