ОТЛАДКА МАШИННОГО КОДА ПУТЕМ ПЕРЕХОДА ОТ ИСПОЛНЕНИЯ В СОБСТВЕННОМ РЕЖИМЕ К ИСПОЛНЕНИЮ В ИНТЕРПРЕТИРУЕМОМ РЕЖИМЕ

1. Система, содержащая:
по меньшей мере один процессор вычислительного устройства;
память вычислительного устройства; и
байт-код (325), сформированный из исходного кода;
отладчик, содержащий по меньшей мере один программный модуль, загруженный в память, побуждающий упомянутый по меньшей мере один процессор:
вставить по меньшей мере одну точку ухода в байт-код, сформированный из программного модуля, при компиляции программного модуля в режиме отладки, где упомянутая по меньшей мере одна точка ухода является местоположением в байт-коде, в котором отладка в собственном режиме может переходить к отладке в интерпретируемом режиме при условии, что выполняются некоторые условия ухода;
исполнить машинный код;
перейти от отладки машинного кода, представляющего программный модуль, к отладке интерпретируемого кода, представляющего программный модуль, в ответ на обнаружение в точке ухода, что выполнено условие ухода из отладки.
2. Система по п. 1, дополнительно содержащая:
по меньшей мере один программный модуль, загруженный в память, побуждающий упомянутый по меньшей мере один процессор:
принять текущее состояние машинного кода, исполняющегося согласно отладчику;
создать экземпляр интерпретатора;
создать кадр стека интерпретатора для экземпляра интерпретатора; и
заполнить кадр стека интерпретатора для созданного экземпляра интерпретатора текущим состоянием машинного кода.
3. Система по п. 1, дополнительно содержащая:
по меньшей мере один программный модуль, загруженный в память, побуждающий упомянутый по меньшей мере один процессор:
принять заданные местоположения ухода для программы, содержащие по меньшей мере одно из:
в начале функции, на обратной петле цикла, когда возвращается функция, когда возвращается вызов вспомогательной функции, когда возвращается вызов библиотеки или когда встречается оператор отладчика.
4. Система по п. 1, дополнительно содержащая:
по меньшей мере один программный модуль, загруженный в память, побуждающий упомянутый по меньшей мере один процессор:
перейти к отладке интерпретируемого кода, представляющего программу, в ответ на прием операции управления исполнением.
5. Система по п. 1, дополнительно содержащая:
по меньшей мере один программный модуль, загруженный в память, побуждающий упомянутый по меньшей мере один процессор:
исполнить операцию отладки в собственном режиме, причем операция отладки модифицирует текущее значение переменной, собственный режим содержит отладку машинного кода, представляющего программу.
6. Способ, содержащий этапы, на которых:
формируют байт-код (325) из исходного кода;
с помощью процессора вычислительного устройства принимают по меньшей мере одну точку условия ухода из отладки для байт-кода, причем по меньшей мере одна точка ухода из отладки является местоположением в байт-коде, сформированном из исходного кода, в котором отладка переходит от отладки машинного кода к отладке интерпретируемого кода для программы в ответ на определение, что выполнено условие ухода из отладки;
инициируют сеанс отладки для программы;
формируют с помощью компилятора машинный код из байт-кода для отладки;
исполняют (256) сформированный машинный код согласно отладчику;
продолжают (260) исполнение байт-кода в интерпретируемом режиме согласно отладчику в ответ на определение, что выполнено условие ухода из отладки, ассоциированное с точкой ухода;
восстанавливают (262) переменные интерпретатора, соответствующие переменным, ассоциированным с исполняемым байт-кодом; и
возобновляют (264) отладку программы в интерпретируемом режиме в точке, в которой прекращена отладка машинного кода.
7. Способ по п. 6, дополнительно содержащий этап, на котором:
принимают упомянутую по меньшей мере одну точку ухода из отладки для программы, причем упомянутая по меньшей мере одна точка ухода из отладки содержит одно из: в начале функции, на обратной петле цикла, когда возвращается функция, когда возвращается вызов вспомогательной функции, когда возвращается библиотека или когда в машинном коде встречается оператор отладчика.
8. Способ по п. 6, дополнительно содержащий этап, на котором:
переходят к отладке в интерпретируемом режиме в ответ на прием операции отладки, содержащей операцию управления исполнением, содержащую одну из операции асинхронного останова, пошаговой работы, точки останова или операции останова по исключению.
9. Способ по п. 6, дополнительно содержащий этап, на котором определяют, что выполнено условие ухода из отладки, путем определения глубины стека у стека, ассоциированного с программой.
10. Считываемый компьютером носитель информации, содержащий исполняемые компьютером команды, которые при исполнении побуждают по меньшей мере один процессор вычислительного устройства выполнить по меньшей мере один из способов по пп. 6-9.