RU2521265C2 - System and method for automatic processing of software system errors - Google Patents
System and method for automatic processing of software system errors Download PDFInfo
- Publication number
- RU2521265C2 RU2521265C2 RU2012141465/08A RU2012141465A RU2521265C2 RU 2521265 C2 RU2521265 C2 RU 2521265C2 RU 2012141465/08 A RU2012141465/08 A RU 2012141465/08A RU 2012141465 A RU2012141465 A RU 2012141465A RU 2521265 C2 RU2521265 C2 RU 2521265C2
- Authority
- RU
- Russia
- Prior art keywords
- error
- computer system
- software
- errors
- emulator
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 37
- 238000000034 method Methods 0.000 title claims description 72
- 230000006870 function Effects 0.000 claims description 55
- 238000013515 script Methods 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 abstract description 13
- 238000012986 modification Methods 0.000 abstract description 2
- 230000004048 modification Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 230000008569 process Effects 0.000 description 43
- 238000009434 installation Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000011900 installation process Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000001364 causal effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000007630 basic procedure Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
Область техникиTechnical field
Настоящее изобретение относится к средствам управления программным обеспечением и более конкретно к системам и способам обработки ошибок, возникающих при работе программного обеспечения.The present invention relates to software controls and, more particularly, to systems and methods for handling errors that occur during software operation.
Уровень техникиState of the art
Одной из важных характеристик программного обеспечения (ПО) является отказоустойчивость программ в условиях, определяемых различными программными и аппаратными конфигурациями компьютерных систем. В интересах производителя ПО - выпустить продукт, исключающий возникновение неустранимых ошибок в работе программы и компьютерной системы. Для этого существует множество способов, одним из которых является проектирование установщика программы, который будет производить установку с учетом системного окружения. Предусмотреть все варианты пользовательских систем, протестировать работу программы на них и адаптировать ее под каждую модификацию невозможно даже в условиях полной стандартизации проектирования компьютерных систем и программ.One of the important characteristics of software (software) is the fault tolerance of programs under conditions determined by various software and hardware configurations of computer systems. It is in the interests of the software manufacturer to release a product that excludes the occurrence of fatal errors in the operation of the program and the computer system. There are many ways to do this, one of which is designing the program installer, which will perform the installation taking into account the system environment. It is impossible to foresee all variants of user systems, test the program on them and adapt it for each modification even in the conditions of full standardization of the design of computer systems and programs.
Каждое выпускаемое приложение при правильном проектировании должно корректно обрабатывать ошибки, связанные с работой приложения. Это необходимо в первую очередь для поддержки пользователей, быстрого внесения исправлений в программу и выпуска обновлений. Это особенно актуально для программ, предоставляющих сервисы другим приложениям, для программных библиотек и т.д.Each released application with proper design should correctly handle errors associated with the application. This is primarily necessary to support users, quickly make corrections to the program and release updates. This is especially true for programs that provide services to other applications, for software libraries, etc.
Концепция проектирования ПО оставляет возможность возникновения ошибок в различных ситуациях и конфигурациях компьютерной системы, что необходимо учитывать при установке нового ПО, обновлении программных модулей и совместном использовании различных приложений и системных служб. Для решения данной задачи, связанной с управлением программным обеспечением, требуется новая технология, позволяющая выявлять возможные системные ошибки, анализировать и исключать причины их появления и корректно обрабатывать ошибки в случае их возникновения в компьютерной системе.The software design concept leaves the possibility of errors in various situations and computer system configurations, which must be taken into account when installing new software, updating software modules and sharing various applications and system services. To solve this problem related to software management, a new technology is required that allows identifying possible system errors, analyzing and eliminating the causes of their occurrence, and correctly handling errors if they occur in a computer system.
Существующие технологии позволяют тестировать программы, в том числе, в эмулируемой среде исполнения. Среди них присутствуют способы симуляции различных состояний системы для выявления возможных ошибок, один из которых описан в патенте US 7203881. Но не все обнаруженные в ходе тестирования ошибки возможно исправить путем коррекции кода приложения. Проблема постобработки ошибок при попытке установки программ и их работе на компьютере приобретает еще большее значение с ростом количества приложений, их обновлений и версий.Existing technologies allow testing programs, including in an emulated runtime environment. Among them, there are methods of simulating various system states to detect possible errors, one of which is described in US Pat. No. 7,083,881. But not all errors detected during testing can be corrected by correcting the application code. The problem of post-processing errors when trying to install programs and run them on a computer becomes even more important with the increasing number of applications, their updates and versions.
Технология, описанная в патенте US 6378128, позволяет корректировать установщик программы для решения возникающих проблем. Применение этого способа неэффективно при установке ПО в корпоративной вычислительной сети (КВС) с большим количеством рабочих станций, для каждой из которых может потребоваться формирование уникального установщика.The technology described in US patent 6378128, allows you to adjust the installer program to solve problems. The application of this method is ineffective when installing software in a corporate computer network (PIC) with a large number of workstations, each of which may require the formation of a unique installer.
Другими вариантами решения проблемы возникновения системных ошибок при установке ПО являются откат состояния системы и использование средств виртуализации для предустановки. В патентных публикациях US 20060168165, US 6691250 описаны примеры подобных систем, но они не позволяют выявить причины возникновения ошибок.Other solutions to the problem of system errors during software installation are to roll back the system state and use virtualization tools for pre-installation. In patent publications US 20060168165, US 6691250 describes examples of such systems, but they do not allow to identify the causes of errors.
Современные системы администрирования компьютерных систем содержат инструменты отслеживания системных ошибок, однако анализ ошибок производится уже после их возникновения в реальной системе.Modern computer system administration systems contain tools for tracking system errors, but errors are analyzed after they occur in a real system.
Данное изобретение устраняет описанные недостатки и позволяет предотвращать появление ошибок и обрабатывать возникшие ошибки в компьютерных системах при установке и работе ПО, используя экспертные данные, полученные при анализе программ на наличие ошибок в эмуляторе.This invention eliminates the described disadvantages and allows you to prevent errors and process errors that occur in computer systems during installation and operation of the software using expert data obtained by analyzing programs for errors in the emulator.
Сущность изобретенияSUMMARY OF THE INVENTION
Настоящее изобретение предназначено для исключения ошибок, возникающих в процессе работы программного обеспечения, в том числе при установке нового или обновлении имеющегося программного обеспечения.The present invention is intended to eliminate errors that occur during the operation of the software, including when installing new or updating existing software.
Технический результат настоящего изобретения заключается в повышении скорости обработки ошибок, возникающих при исполнении кода программы в компьютерной системе.The technical result of the present invention is to increase the speed of processing errors that occur when executing program code in a computer system.
Применение изобретения на практике позволяет тестировать программное обеспечение на совместимость с конфигурацией компьютерной системы; определять полный перечень ошибок, которые могут возникнуть при работе программы в различных условиях; выявлять причины возникновения системных ошибок и производить модификацию компьютерной системы для предотвращения возникновения определенной ошибки.Putting the invention into practice allows testing software for compatibility with the configuration of a computer system; determine the full list of errors that may occur when the program is running in various conditions; identify the causes of system errors and modify the computer system to prevent the occurrence of a specific error.
Технический результат достигается за счет автоматизации исследования программного обеспечения в эмулируемой среде исполнения и формирования экспертной системой сценариев обработки, определенных в ходе исследования ошибок.The technical result is achieved by automating the study of software in an emulated execution environment and the formation of an expert system of processing scenarios defined during the study of errors.
В основном варианте реализации система состоит из эмулятора, экспертной системы, экспертной базы данных и обработчика ошибок. Эмулятор предназначен для воспроизведения состояния компьютерной системы с целью возникновения ошибки, исполнения программного приложения в воспроизведенном состоянии компьютерной системы и определения, по меньшей мере, одной ошибки в соответствии с условиями, послужившими причиной возникновения данной ошибки в ходе исполнения программного приложения. Экспертная система, связанная с эмулятором, предназначена для составления, по меньшей мере, одного сценария обработки ошибки, определенной эмулятором, в зависимости от условий, послуживших причиной возникновения данной ошибки и обновления экспертной базы данных информацией, содержащей идентификатор упомянутой ошибки, условия ее возникновения и, по меньшей мере, один сценарий обработки ошибки. Экспертная база данных, связанная с экспертной системой, предназначена для хранения информации об ошибках, условиях их возникновения и сценариях их обработки для соответствующего приложения. Обработчик ошибок, связанный с экспертной базой данных, предназначен для определения факта возникновения ошибки при исполнении программного приложения на компьютерной системе, загрузки соответствующего для данной ошибки сценария обработки ошибки из экспертной базы данных и выполнения сценария обработки соответствующей ошибки.In the main implementation variant, the system consists of an emulator, an expert system, an expert database, and an error handler. The emulator is designed to reproduce the state of a computer system in order to cause an error, execute the software application in the reproduced state of the computer system and determine at least one error in accordance with the conditions that caused this error to occur during the execution of the software application. The expert system associated with the emulator is designed to compile at least one error processing scenario defined by the emulator, depending on the conditions that caused this error and update the expert database with information containing the identifier of the error, the conditions for its occurrence and, at least one error handling scenario. The expert database associated with the expert system is designed to store information about errors, the conditions of their occurrence and their processing scenarios for the corresponding application. The error handler associated with the expert database is designed to determine whether an error occurred while executing a software application on a computer system, load the error processing script corresponding to the given error from the expert database, and execute the corresponding error processing script.
Изобретение в одном из вариантов реализаций обрабатывает ошибки программного приложения, которое является установщиком программного обеспечения.In one embodiment, the invention handles errors of a software application that is a software installer.
Один из предложенных вариантов реализации содержит обработчик ошибок, который дополнительно предназначен для изменения состояния компьютерной системы перед началом исполнения программного приложения с целью предотвращения возникновения ошибки.One of the proposed implementation options contains an error handler, which is additionally designed to change the state of a computer system before starting to execute a software application in order to prevent an error.
Состояние компьютерной системы определяется настройками компьютерной системы, перечнем установленного программного обеспечения, перечнем устройств компьютерной системы, загруженными в память данными, подключениями к сети передачи данных.The state of a computer system is determined by the settings of the computer system, the list of installed software, the list of computer system devices, data loaded into the memory, and connections to the data network.
В частном варианте реализации эмулятор воспроизводит функции, по меньшей мере, процессора и памяти компьютерной системы.In a particular embodiment, the emulator reproduces the functions of at least the processor and memory of a computer system.
Один из вариантов реализации содержит эмулятор, который воспроизводит состояние компьютерной системы, изменяя, по меньшей мере, одно возвращаемое значение API-функции операционной системы.One embodiment includes an emulator that reproduces the state of a computer system by changing at least one return value of an operating system API function.
Предложенные варианты реализации обрабатывают ошибки, возникающие в случае вызова исключения, возврата кода ошибки, присвоения значения переменной ошибки, выявления ошибки обработчиком системных событий.The proposed implementation options handle errors that occur when an exception is thrown, an error code is returned, an error variable is assigned a value, and an error is detected by the system event handler.
Сценарий обработки ошибки в одном из вариантов реализации состоит из последовательности команд, позволяющих произвести конфигурацию компьютерной системы для исключения возникновения ошибки.The error processing scenario in one implementation option consists of a sequence of commands that allow you to configure a computer system to eliminate the occurrence of an error.
Другой вариант сценария обработки ошибки состоит из последовательности команд, позволяющих передать информацию о возникшей ошибке на сервер администрирования.Another variant of the error handling scenario consists of a sequence of commands that allow transferring information about an error to the administration server.
Краткое описание прилагаемых чертежейBrief description of the attached drawings
Сопровождающие чертежи, которые включены для обеспечения дополнительного понимания изобретения и составляют часть этого описания, показывают варианты осуществления изобретения и совместно с описанием служат для объяснения принципов изобретения.The accompanying drawings, which are included to provide an additional understanding of the invention and form part of this description, show embodiments of the invention and together with the description serve to explain the principles of the invention.
Заявленное изобретение поясняется следующими чертежами, наThe claimed invention is illustrated by the following drawings, on
которых:which:
Фиг.1 показывает схему исполнения приложения на компьютерном устройстве.Figure 1 shows a diagram of the execution of an application on a computer device.
Фиг.2 показывает схему исполнения приложения в эмуляторе.Figure 2 shows a diagram of the execution of the application in the emulator.
Фиг.3 показывает структурную схему эмулятора. Figure 3 shows a block diagram of an emulator.
Фиг.4 показывает блок схему алгоритма работы эмулятора.Figure 4 shows a block diagram of the algorithm of the emulator.
Фиг.5 показывает функциональную схему системы автоматической обработки системных ошибок.Figure 5 shows a functional diagram of a system for automatically processing system errors.
Фиг.6 показывает алгоритм работы системы автоматической обработки системных ошибок.Fig.6 shows the algorithm of the system for automatic processing of system errors.
Фиг.7 показывает пример компьютерной системы общего назначения.7 shows an example of a general purpose computer system.
Описание предпочтительных вариантов осуществленияDescription of Preferred Embodiments
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.The objects and features of the present invention, methods for achieving these objects and features will become apparent by reference to exemplary embodiments. However, the present invention is not limited to the exemplary embodiments disclosed below, it can be embodied in various forms. The essence described in the description is nothing more than the specific details necessary to assist the specialist in the field of technology in a comprehensive understanding of the invention, and the present invention is defined in the scope of the attached claims.
Исследование программ на предмет возможного возникновения ошибок при их выполнении в компьютерной системе особенно актуально для анализа установщиков. Современное программное обеспечение строится с учетом технических требований для его корректной работы, где проверка соответствия реализуется именно в распространяемых программах-установщиках.The study of programs for possible errors during their execution in a computer system is especially important for the analysis of installers. Modern software is built taking into account the technical requirements for its correct operation, where compliance verification is implemented in distributed installer programs.
Рассмотрим пример установщика (инсталлятора) пользовательского приложения. В большинстве случаев программы распространяются в сжатом самораспаковывающемся формате. Процесс установки включает в себя тест системы на соответствие техническим требованиям, распаковку и правильное расположение файлов по директориям на диске, добавление или изменение переменных среды. Для установки некоторых программ и дополнений процесс установки ограничивается копированием файла в соответствующую директорию. Существуют инсталляторы, которые загружают файлы из сети Интернет и изначально не содержат в себе файлов программы. Также применяется модель пакетной установки программ, в которой установщик является частью операционной системы, а ПО распространяется в виде стандартного формата для пакетной обработки.Consider the example of the installer (installer) of a user application. In most cases, programs are distributed in a compressed, self-extracting format. The installation process includes a system test for compliance with technical requirements, unpacking and the correct location of files in directories on the disk, adding or changing environment variables. To install some programs and add-ons, the installation process is limited to copying the file to the appropriate directory. There are installers that download files from the Internet and initially do not contain program files. The model of batch installation of programs is also used, in which the installer is part of the operating system, and the software is distributed in the form of a standard format for batch processing.
В зависимости от функционала программы установщик может проверять различные технические требования, предъявляемые пользовательской системе, которые выражаются в виде определенных условий. В качестве примера набор условных проверок состоит из:Depending on the functionality of the program, the installer can check various technical requirements for the user system, which are expressed in the form of certain conditions. As an example, a set of conditional checks consists of:
- проверки доступа для записи/чтения необходимого программе файла;- access checks for writing / reading the file necessary for the program;
- проверки наличия необходимого свободного места на диске;- checking the availability of necessary free disk space;
- проверки наличия необходимых для функционирования библиотек, интерпретаторов;- checking the availability of libraries and interpreters necessary for the functioning;
- проверки соответствия характеристик процессора, памяти и видеоконтроллера требованиям ПО к вычислительным ресурсам;- verification of the characteristics of the processor, memory and video controller software requirements for computing resources;
- проверки доступности удаленного ресурса по сети передачи данных;- checking the availability of a remote resource over a data network;
- проверки любого другого параметра системы.- checking any other system parameter.
Возникновению системных ошибок и вызову исключений предшествует, как правило, выполнение операций программы, которые являются условием возникновения ошибки (тест системы). После этого следует, как правило, возврат кода ошибки, являющийся идентификатором ошибки, или вызов обработчика исключения, если соответствующая проблема была предусмотрена разработчиком. В противном случае, ошибка в работе программы будет являться необратимой, и прерывание или ошибка будет обработана операционной системой. Используя код ошибки, можно обратиться к документации, которую предоставляют разработчики ПО. Однако данные справочные документы содержат неполный список ошибок, ограничиваются расшифровкой кода ошибки и не способны указать на конкретную причину возникновения ошибки, а потому не применимы для использования в экспертных системах, которым необходимы более точные детали для эффективного применения экспертных правил при исправлении ошибок.The occurrence of system errors and the raising of exceptions is usually preceded by the execution of program operations, which are a condition for the occurrence of an error (system test). After this follows, as a rule, returning the error code, which is the identifier of the error, or calling the exception handler if the corresponding problem was provided by the developer. Otherwise, the error in the program operation will be irreversible, and the interruption or error will be processed by the operating system. Using the error code, you can refer to the documentation provided by the software developers. However, these reference documents contain an incomplete list of errors, are limited to decoding the error code and are not able to indicate the specific cause of the error, and therefore are not applicable for use in expert systems that require more accurate details for the effective application of expert rules in correcting errors.
В зависимости от языка программирования и архитектуры приложения способы обработки и оповещения о нештатных ситуациях (ошибках) применяются различные. Наиболее простым способом является применение кодов ошибок. Суть данного метода заключается в том, что каждая подпрограмма (функция, процедура или другой блок кода в зависимости от используемого языка программирования) должна вернуть вызывающей ее главной функции код, значение которого будет означать успешность выполнения задачи или ошибку. Значения кодов, соответствующих ошибкам при работе подпрограмм, и составляют набор кодов ошибок.Depending on the programming language and architecture of the application, various methods are used for processing and reporting emergency situations (errors). The easiest way is to use error codes. The essence of this method is that each subprogram (function, procedure or other block of code, depending on the programming language used) must return a code that calls its main function, the value of which will mean the success of the task or an error. The values of the codes corresponding to errors during the operation of subprograms constitute a set of error codes.
Пример использования кодов ошибок в коде программы показан ниже. Ошибка может возвращаться различными операторами, в том числе в виде кодов возврата функции.An example of using error codes in program code is shown below. The error can be returned by various operators, including in the form of function return codes.
Примеры (кодов ошибок) для Adobe Flash Player:Examples (error codes) for Adobe Flash Player:
Для хранения ошибок часто используются глобальные переменные, например в языке Си ошибки хранятся в переменной «errno»: Global variables are often used to store errors, for example, in the C language, errors are stored in the errno variable:
Если рассмотреть работу операционной системы семейства Windows, то в большинстве функций используются именно коды ошибок. Другим применяемым способом оповещения об отказе являются вызовы исключений. Исключения используются в тех случаях, когда состояние данных, устройств ввода-вывода или компьютерной системы в целом делает дальнейшее выполнение программы невозможным или бессмысленным. Каждое исключение может быть обработано с возвратом, когда программа исправляет ошибку и продолжает функционирование, или без возврата, передавая управление другому предопределенному модулю программы.If we consider the operation of the operating system of the Windows family, then most of the functions use error codes. Another applicable failure notification method is exception calls. Exceptions are used in cases where the state of the data, I / O devices or the computer system as a whole makes further execution of the program impossible or pointless. Each exception can be processed with a return when the program corrects the error and continues to function, or without returning, transferring control to another predefined program module.
Большинство современных языков программирования, таких как С++, Delphi, Objective-C, Java, Ruby, Python, PHP, все языки платформы .NET и др. имеют встроенную поддержку структурной обработки исключений. В этих языках при возникновении исключения, поддерживаемого языком, происходит раскрытие стека вызовов до первого обработчика исключений подходящего типа и передача управления обработчику.Most modern programming languages, such as C ++, Delphi, Objective-C, Java, Ruby, Python, PHP, all languages of the .NET platform, etc. have built-in support for structural exception handling. In these languages, when an exception is supported by the language, the call stack is expanded to the first exception handler of the appropriate type and control is transferred to the handler.
При возникновении исключительной (нештатной) ситуации генерируется исключение, которое с точки зрения программы представляет собой объект данных, содержащий параметры исключения, например, условия или причины возникновения. В одних языках объектом-исключением может быть объект любого типа данных (в том числе строка, число, указатель и так далее), в других - объект только предопределенного типа и его производных типов.In the event of an exceptional (contingency) situation, an exception is generated, which from the point of view of the program is a data object containing the parameters of the exception, for example, conditions or causes of the occurrence. In some languages, an exception object can be an object of any data type (including a string, number, pointer, and so on), in others, an object of only a predefined type and its derived types.
Описанные методы обработки ошибок используются при написании программного кода. В этом случае программисту известны все возможные ошибки, которые могут возникнуть в приложении и системе. Обработка ошибок на этом этапе производится непосредственно в самой программе.The error handling methods described are used when writing program code. In this case, the programmer knows all the possible errors that may occur in the application and the system. Error handling at this stage is performed directly in the program itself.
Очень часто возникает необходимость в определении списка обрабатываемых ошибок и исключений уже в скомпилированной программе. Данная задача может быть особенно актуальна для поддержки плохо документированных приложений, для тестирования программ и обеспечения безопасности. Более того, производители программного обеспечения не всегда указывают полный список возможных ошибок и редко описывают причины возникновения ошибки и возможные способы их исправления и предотвращения.Very often there is a need to define a list of errors and exceptions to be processed already in the compiled program. This task may be especially relevant for supporting poorly documented applications, for testing programs and ensuring security. Moreover, software manufacturers do not always indicate a complete list of possible errors and rarely describe the causes of errors and possible ways to correct and prevent them.
Предложенный в данном описании способ решает задачу определения полного списка кодов ошибок в стороннем программном продукте, позволяет определить условия возникновения ошибки, предложить шаги по исправлению ошибок и предотвращению их повторений.The method proposed in this description solves the problem of determining a complete list of error codes in a third-party software product, allows you to determine the conditions for the occurrence of errors, suggest steps to correct errors and prevent their recurrence.
Основная сложность анализа программного продукта заключается в закрытости исходного кода. Проприетарные программные продукты доступны, как правило, в виде исполняемого бинарного файла. Исследование логики программы на предмет наличия обрабатываемых ошибок производится путем трассировки программы, эмуляции исполнения программы или дизассемблирования бинарного кода.The main difficulty in analyzing a software product is the closed source code. Proprietary software products are usually available as an executable binary file. The study of the program logic for processed errors is carried out by tracing the program, emulating program execution or disassembling the binary code.
Исполнение программы в эмулируемой, виртуальной или ограниченной среде в стандартном режиме не позволит получить полный перечень ошибок, которые могут быть вызваны. В отличие от тех случаев, когда ошибка задана явным образом и место ее возникновения четко определено, вызов исключения может произойти в любой момент. Это приводит к еще одной проблеме - необходимости симуляции различных условий среды и поведения программы.Executing a program in an emulated, virtual or limited environment in standard mode will not allow you to get a complete list of errors that may be caused. Unlike those cases when the error is explicitly defined and the place of its occurrence is clearly defined, an exception can be raised at any time. This leads to another problem - the need to simulate various environmental conditions and program behavior.
В общем случае алгоритм работы программы можно изобразить в виде древовидной структуры условных переходов, где каждый узел представляет собой проверку выполнения условия, а исходящие из узла ветки - блоки последовательных выполняющихся команд. Одна из веток характеризует обработку ошибки или исключения, при этом конец древовидной структуры характеризует успешное завершение программы или вызов ошибки. Данный способ позволяет проанализировать исполняемый код программы с целью построения связей кода ошибки с условием возникновения ошибки.In the general case, the program operation algorithm can be represented as a tree-like structure of conditional transitions, where each node is a check of the condition, and the branches proceeding from the node are blocks of consecutive executing commands. One of the branches characterizes the processing of errors or exceptions, while the end of the tree structure characterizes the successful completion of the program or the error call. This method allows you to analyze the executable code of the program in order to build the relationship of the error code with the condition for the occurrence of the error.
Для более детального раскрытия принципов, лежащих в основе исследования компьютерных программ в эмулируемом пространстве, рассмотрим примеры форматов программ (программных приложений), процессы их запуска и исполнения в компьютерных системах.For a more detailed disclosure of the principles underlying the study of computer programs in an emulated space, we consider examples of program formats (software applications), the processes of their launch and execution in computer systems.
Компьютерной программой называется совокупность последовательности команд, предназначенных для управления устройствами компьютерной системы с целью реализации определенного алгоритма, и данных, используемых при выполнении этих команд. В зависимости от выбранной парадигмы программирования программа может быть выражена в объектной форме или в виде исходного кода. От этого непосредственно зависит процесс запуска и исполнения.A computer program is a combination of a sequence of commands designed to control devices of a computer system in order to implement a specific algorithm, and data used to execute these commands. Depending on the chosen programming paradigm, the program can be expressed in object form or in the form of source code. The process of launch and execution directly depends on this.
Некоторые языки программирования позволяют обходиться без предварительной компиляции программы и переводят ее в инструкции машинного кода непосредственно во время исполнения. Этот процесс называется динамической компиляцией и позволяет добиться большей переносимости программ между разными аппаратными и программными платформами. Программы, которые интерпретируются операционной системой или специальными программами-интерпретаторами, называются скриптами или «сценариями». Данные программы также хранятся на диске в виде одиночных файлов или наборов файлов, в которых, содержится исходный код и данные.Some programming languages allow you to do without preliminary compilation of the program and translate it into machine code instructions directly at runtime. This process is called dynamic compilation and allows for greater portability of programs between different hardware and software platforms. Programs that are interpreted by the operating system or special interpreter programs are called scripts or “scripts”. Program data is also stored on disk in the form of single files or sets of files in which the source code and data are contained.
В случае, когда программа предварительно откомпилирована и хранится на диске в виде исполняемого файла или набора файлов, процесс загрузки является более быстрым и заключается в переносе образа программы с диска в оперативную память компьютера. Исполняемым файлом (executable file) называется файл, который может быть загружен в память загрузчиком операционной системы и затем исполнен. В операционной системе семейства Windows исполняемые файлы, как правило, имеют расширения ".ехе" и ".dll". Расширение ".ехе" имеют программы, которые могут быть непосредственно запущены пользователем. Расширение ".dll" имеют так называемые динамически связываемые библиотеки (dynamic link libraries). Эти библиотеки экспортируют функции, используемые другими программами. Для того чтобы загрузчик операционной системы мог правильно загрузить исполняемый файл в память, содержимое этого файла должно соответствовать принятому в данной операционной системе формату исполняемых файлов. В современных операционных системах существует множество различных форматов исполняемых файлов. Рассмотрим в качестве примера программу, написанную и скомпилированную для исполнения в операционной системе семейства Windows. Формат Portable Executable (РЕ) - это основной формат для хранения исполняемых файлов и библиотек в операционной системе семейства Windows. Части программ могут компилироваться независимо в отдельные объектные файлы, которые затем объединяются компоновщиком в один исполняемый файл. Исполняемый файл описываемого формата имеет определенную спецификацию. РЕ-файл начинается с заголовков, за которыми располагаются несколько секций. Секция в РЕ-файле представляет либо код, либо некоторые данные и имеет набор атрибутов, задающих ее свойства. Исполняемый файл всегда содержит, по крайней мере, одну секцию, в которую помещен исполняемый код. В общем случае РЕ-файл имеет секции кода (text), данных (data), неинициализированных данных (bss), а также динамически распределяемую область памяти при загрузке - кучу (heap) и стек (stack). Каждая секция имеет собственное предназначение, например сегмент кода содержит непосредственно исполняемые инструкции.In the case when the program is precompiled and stored on disk as an executable file or a set of files, the download process is faster and consists in transferring the program image from disk to the computer’s RAM. An executable file is a file that can be loaded into memory by the loader of the operating system and then executed. In the Windows family of operating systems, executables, as a rule, have the extensions ".exe" and ".dll". The extension ".exe" have programs that can be directly launched by the user. The extension ".dll" have the so-called dynamic link libraries. These libraries export functions used by other programs. In order for the bootloader of the operating system to correctly load the executable file into memory, the contents of this file must correspond to the format of executable files accepted in the operating system. In modern operating systems, there are many different formats of executable files. Consider, for example, a program written and compiled for execution on a Windows operating system. Portable Executable (PE) format is the main format for storing executable files and libraries in the operating system of the Windows family. Parts of programs can be independently compiled into separate object files, which are then combined by the linker into one executable file. The executable file of the described format has a specific specification. The PE file begins with headers followed by several sections. A section in a PE file represents either code or some data and has a set of attributes defining its properties. An executable file always contains at least one section in which the executable code is placed. In general, a PE file has sections of code (text), data (data), uninitialized data (bss), as well as a dynamically allocated memory area at boot - a heap and a stack. Each section has its own purpose, for example, a code segment contains directly executable instructions.
На Фиг.1 показана схема исполнения приложения на компьютерном устройстве, содержащем память и процессор. Приложение, которое может иметь различный функционал, в том числе являться установщиком ПО, представлено на схеме в виде исполняемого файла 100. В других вариантах реализации файл 100 приложения может быть неисполняемым, и для его воспроизведения потребуется дополнительно компилятор или интерпретатор. Исполняемый файл 100 приложения хранится на диске 27 или на другой внешней памяти.Figure 1 shows a diagram of the execution of an application on a computer device containing memory and a processor. An application that can have various functionalities, including being a software installer, is presented in the diagram as an
Запуск программ в операционных системах 111 обрабатывает специальный модуль - загрузчик, который создает процесс и потоки, загружает необходимые для начала работы код и данные в память процесса и передает управление приложению. Схема выделения виртуальной памяти 130 описана ниже. Образ РЕ-файла в памяти практически идентичен своему представлению 100 на диске. Данная особенность формата упрощает работу загрузчика, которому достаточно отобразить отдельные части РЕ-файла в адресное пространство процесса, изменить абсолютные адреса в исполняемом коде в соответствии с таблицей релокаций, создать таблицу адресов импорта и затем передать управление на точку входа. В процессе исполнения программы могут потребоваться библиотеки, подгружаемые из каталогов операционной системы или стороннего набора библиотек, ссылки на которые указаны в секции импорта. Таким образом, при запуске программы загрузчик производит следующие действия: считывает заголовки и необходимые секции запускаемого файла 100; загружает в память библиотеки 134, код 132 и данные (ресурсы) 133; выполняет связывание адресов; создает в памяти новый процесс и планирует его к исполнению.Launching programs in
Процессом называется объект операционной системы, содержащий набор ресурсов и данных 133, использующихся при выполнении программы. При этом для каждого процесса создаются потоки, по меньшей мере, один поток на процесс, которые отвечают за исполнение кода 132 процесса и состоят из инструкций. Инструкции или операционный код (опкод) - это операция выполняемая процессором. Современные процессоры обрабатывают инструкции в виде команд языка ассемблера и далее уже конвертируют их во внутреннюю систему команд в виде цифрового кода. Выделение процессорного времени, синхронизация и определение приоритета исполнения кода в операционной системе отводится планировщику. Планирование в ОС семейства Windows осуществляется на уровне потоков, независимо от процессов, которым они принадлежат. После того, как создан процесс и поток, начинается исполнение инструкций потока на процессоре.A process is an object of the operating system that contains a set of resources and data 133 that are used to execute a program. At the same time, for each process threads are created, at least one thread per process, which are responsible for the execution of the process code 132 and consist of instructions. An instruction or operating code (opcode) is an operation performed by a processor. Modern processors process instructions in the form of assembler language instructions and then convert them into an internal instruction system in the form of a digital code. Allocation of processor time, synchronization and determining the priority of code execution in the operating system is assigned to the scheduler. Planning in the Windows family of OSs is done at the thread level, regardless of the processes to which they belong. After the process and thread are created, execution of the flow instructions on the processor begins.
По мере исполнения потоков процесса, секции памяти из виртуального адресного пространства 130 загружаются в оперативную память 120. Реальный адрес, по которому размещается секция памяти, скрыт для данного процесса. Неиспользуемые секции переносятся из оперативной памяти 120 на внешнюю память 27 в файл подкачки 140.As the process flows, sections of memory from the virtual address space 130 are loaded into
Схема исполнения программы в эмуляторе отличается от стандартной схемы и показана на Фиг.2. В представленном варианте реализации компьютерная система дополнена эмулятором 200, который выполнен в виде программы, исполняемой на уровне приложений. В других частных случаях эмулятор может являться частью операционной системы 111 или даже отдельным устройством. Эмулятор 200, загруженный в память 120 компьютерной системы и исполняемый на процессоре 21, осуществляет разбор исполняемого файла 100 и обработку его кода. Характерной особенностью является то, что анализируемое приложение загружается в адресное пространство эмулятора 200. Программная реализация эмулятора позволяет обрабатывать код и ресурсы приложения аналогично процессору 21 и операционной системе 111.The program execution scheme in the emulator differs from the standard scheme and is shown in FIG. 2. In the presented embodiment, the computer system is supplemented by an
На Фиг.3 показана структурная схема эмулятора 200. Эмулятор 200 компьютерной системы - это средство воспроизведения устройств и программного обеспечения компьютерной системы, взаимодействующее с внешними объектами аналогично компьютерной системе в рамках заданной точности. Предел точности эмулятора - это полное копирование всех программно-аппаратных функций (реализация операционной системы, всех установленных приложений, логики работы всех установленных на компьютере устройств и соединений). В рамках определенного исследования достаточно частичного воспроизведения функционала и состояния компьютерной системы. Для упрощения эмуляции компьютерной системы используют методы для перехвата запросов к объектам компьютерной системы, которые не были эмулированы, для перенаправления запросов реальным объектам компьютерной системы. В одном из вариантов реализации для построения эмулятора, способного исполнить код программы требуется воссоздание процессора 300 и памяти 310. Дополнительно в эмулятор включают файловую систему 320, устройства ввода/вывода 330 и сеть передачи данных 340. В некоторых примерах реализации возможно воспроизведение функций операционной системы и внешних сервисов. Как описывалось ранее, процесс исполняемого файла 311 воспроизводится в адресном пространстве эмулятора, в котором происходит его размещение в воссозданной памяти 310. Для контроля программных инструкций, которые обрабатываются в эмуляторе 200 и при необходимости должны быть переданы на исполнение в реальную среду, выделяется отдельный функциональный блок - обработчик запросов 350. Ход исполнения программы в эмуляторе в виде последовательности выполняемых команд ведется модулем журналирования 360.Figure 3 shows the structural diagram of the
Эмулятор 200 в одном из вариантов реализации может быть ограничен обработчиком запросов 350. Таким образом, приложение будет исполняться на реальной компьютерной системе, но все команды приложения будут перехватываться, обрабатываться и записываться в журнал для последующего анализа. Эмуляция в данном случае заключается в подмене результатов некоторых запросов, например результатов вызовов API-функций операционной системы.The
Фиг.4 отображает блок-схему алгоритма работы эмулятора 200 для определения полного перечня системных ошибок, которые могут возникнуть в ходе исполнения кода приложения при различных состояниях и конфигурациях компьютерной системы. Начало эмуляции работы программы 400 может быть инициировано рядом событий (в зависимости от интерпретации), среди которых запуск приложения на исполнение; передача приложения (файлов или процесса приложения) на анализ в эмулятор; сохранение в памяти компьютера приложения, которое ранее не анализировалось и другие системные события. Перехват событий, служащих началом эмуляции приложения, может быть реализован, например, внедрением специального драйвера, обрабатывающего вызовы к операционной системе. После того, как код, ресурсы приложения и необходимые библиотеки загружены в эмулятор, приложение начинает выполняться в эмулируемой среде, где каждая инструкция обрабатывается 405 в эмуляторе обработчиком запросов 350 и сохраняется 420 в модуле журналирования 360.Figure 4 displays a block diagram of the algorithm of the
Рассмотрим вариант реализации системы, в котором в качестве условного ветвления выступает вызов API-функции. При перехвате следующей в хронологическом порядке API-функции эмулятор возвращает приложению заведомо ложное значение 410, после чего программа продолжает исполняться до возникновения ошибки (возврата кода определенной ошибки 415). Эмулятор в каждом цикле последовательно возвращает различные коды ошибок в зависимости от спецификации вызываемой функции. Код ошибки и журнал исполнения программы сохраняются 420, а эмуляция переходит к следующему циклу, в котором весь процесс повторяется, но ложное значение возвращается только от следующей API-функции 430. Количество циклов соответствует количеству вызываемых функций с учетом того, что каждая функция может вернуть несколько, различных кодов ошибок. Выход из цикла происходит, когда обработаны все вызовы функций 425. В результате данных манипуляций в журнале создаются записи о кодах ошибок и вызовах функций, значения которых были подменены. Возврат ложного результата функции означает невыполнение одной из команд программы, что приводит к ошибке в работе программы, которую определяет значение кода ошибки. Функция, вызов которой привел к формированию ошибки, трактуется в качестве причины ее возникновения. Полученные результаты составляют экспертные данные, дающие представление об ошибках и вызвавших указанные ошибки причинах 435. Далее определяются инструкции 440 - действия, направленные на обработку ошибки. Например, если причиной возникновения сбоя послужила попытка чтения файла, необходимо проверить его наличие и настроить разграничение прав доступа.Consider a system implementation in which a call to an API function acts as a conditional branch. When intercepting the next API function in chronological order, the emulator returns to the application a knowingly false value of 410, after which the program continues to run until an error occurs (return of the specific error code 415). The emulator in each cycle sequentially returns different error codes depending on the specification of the function being called. The error code and the program execution log are saved 420, and the emulation proceeds to the next cycle, in which the whole process is repeated, but a false value is returned only from the
Существует набор функций, перебор и анализ которых не даст результата. Для ускорения исследования программы данные функции пропускаются, тем самым уменьшается количество циклов эмуляции. Перечень функций, которые не несут смысловой нагрузки для выявления причин ошибок, заносятся в специальный список, который может быть в дальнейшем дополнен и модифицирован. Рассмотрим пример трассировки приложения, в котором многие функции не будут влиять на код возвращаемой ошибки. Функция CreateFileW не получила доступ к файлу ebO.tmp, например, потому, что файл используется. После этого выполнилось несколько вызовов функций и финальный вызов ExitProcess с кодом возврата 0×401. Журнал вызовов содержит последовательность вызываемых функций и их результатов, следующих за функциями, возвращаемые значения которых были изменены, и показан ниже: There is a set of functions, enumeration and analysis of which will not yield results. To speed up the study of the program, these functions are skipped, thereby reducing the number of emulation cycles. The list of functions that do not carry a semantic load for identifying the causes of errors is entered in a special list, which can be further supplemented and modified. Consider an example of application tracing in which many functions will not affect the error code returned. The CreateFileW function did not access the ebO.tmp file, for example, because the file is being used. After that, several function calls and the final call to ExitProcess with a return code of 0 × 401 were made. The call log contains a sequence of called functions and their results, following the functions whose return values have been changed, and is shown below:
Подобный подход может оптимизировать анализ функций и еще больше сократить время на выявление возможных ошибок.Such an approach can optimize the analysis of functions and further reduce the time to identify possible errors.
Для каждой ошибки необходимо сформировать описание, которое в частном случае может состоять из условий возникновения ошибки, причин и способов ее исключения. После того, как экспертная база данных дополнена инструкциями обработки ошибок и их описаниями, процесс эмуляции и анализа программного обеспечения завершается.For each error, it is necessary to generate a description, which in a particular case may consist of the conditions for the occurrence of the error, the causes and methods of its elimination. After the expert database is supplemented with error handling instructions and descriptions, the process of emulation and analysis of the software is completed.
Далее более детально описано устройство основных узлов компьютерной системы, которые участвуют в исполнении кода программы и входят в состав эмулятора 200.The following describes in more detail the device of the main components of a computer system that participate in the execution of the program code and are part of the
Рассмотрим устройство процессора 300 на примере архитектуры ×86. Каждая архитектура характеризуется набором команд процессора, схемой работы с памятью, таблицей декодирования команд и т.д. Помимо основного набора команд, то есть команд, с помощью которых можно выполнить любую программу, процессоры семейства ×86 имеют расширения в виде специальных возможностей, реализуемых компанией-производителем. К подобным расширениям, как правило, относятся команды оптимизации исполнения инструкций, использование специальных режимов исполнения инструкций и другие.Consider the
Основными элементами процессора являются исполняющие устройства 302, которые непосредственно выполняют все инструкции. Среди них можно выделить две основные группы: арифметико-логические устройства (ALU) и блок вычислений с плавающей точкой (FPU).The main elements of the processor are executing
В современных процессорах команды потоков отличаются от операций, которые реализуют исполняющие устройства. Это сделано для упрощения работы исполняющих устройств и увеличения скорости работы процессора. Для преобразования ×86 совместимого кода во внутреннюю систему команд исполняющих устройств используется декодер 301.In modern processors, thread instructions are different from operations that implement runtime devices. This is done to simplify the operation of executing devices and increase the speed of the processor. A
Развитие процессорной техники привело к появлению кэша, ускоряющего исполнение программ. Кэш представляет собой временную память, доступ к которой на порядок быстрее, чем чтение данных из ОЗУ (оперативно запоминающее устройство). Когда поток начинает выполняться, загружаемые из процесса ресурсы сохраняются в кэше, перезаписывая в нем устаревшие данные. Далее, перед тем как загрузить данные из ОЗУ, процессор проверяет их наличие в кэше, тем самым экономит время на выполнение программы. В современных процессорах поддерживается многоуровневое кэширование, разделяющее кэш данных, кэш инструкции, смешанный кэш и т.д.The development of processor technology has led to the emergence of a cache that accelerates the execution of programs. The cache is a temporary memory, access to which is an order of magnitude faster than reading data from RAM (random access memory). When a thread begins to execute, resources loaded from the process are stored in the cache, overwriting obsolete data in it. Further, before downloading data from RAM, the processor checks its presence in the cache, thereby saving time on program execution. Modern processors support multilevel caching, sharing the data cache, instruction cache, mixed cache, etc.
Самой быстрой памятью являются регистры 303, которые располагаются непосредственно в ядре процессора. Пример 32-разрадного процессора содержит восемь регистров общего назначения, которые могут использоваться для хранения данных и адресов, шесть регистров сегментов, регистры состояния и управления и специальные регистры.The fastest memory is
Процессор может работать в нескольких режимах. Основными из них являются реальный и защищенный режимы. Переключения между режимами происходят программно. Работа процессора в реальном режиме характеризуется выполнением 16-разрядных команд, 20-разрядной адресацией и незащищенностью адресного пространства одной программы от другой. Современные операционные системы, поддерживающие многозадачность, используют защищенный режим. Новый метод адресации памяти позволяет изолировать адресные пространства отдельных задач друг от друга. При этом прикладная программа, работающая в среде операционной системы, использующей защищенный режим, не может случайно или намеренно разрушить целостность самой операционной системы. В защищенном режиме программа может записывать данные только в те области памяти, которые выделены ей операционной системой. Это повышает надежность работы многозадачных и, в частности, многопользовательских операционных систем. Именно в защищенном режиме возможно страничное управление памятью, которое позволяет поместить часть оперативной памяти на диске. Страничная организация памяти - простая схема повышения эффективности, в соответствии с которой память разбивается на страницы от 512 байт до нескольких килобайт. Соответствующая схема обращения позволяет в пределах страницы уменьшить количество состояний ожидания.The processor can work in several modes. The main ones are real and protected modes. Switching between modes occurs programmatically. The processor in real mode is characterized by the execution of 16-bit instructions, 20-bit addressing and the vulnerability of the address space of one program from another. Modern multi-tasking operating systems use protected mode. The new memory addressing method allows you to isolate the address spaces of individual tasks from each other. At the same time, an application program running in an operating system environment that uses protected mode cannot accidentally or intentionally destroy the integrity of the operating system itself. In protected mode, the program can only write data to those areas of memory that are allocated to it by the operating system. This increases the reliability of multitasking and, in particular, multi-user operating systems. It is in protected mode that page memory management is possible, which allows you to place part of the RAM on disk. Page organization of memory is a simple scheme for increasing efficiency, according to which memory is divided into pages from 512 bytes to several kilobytes. An appropriate call pattern allows you to reduce the number of wait states within a page.
Все потоки процесса выполняются в едином адресном пространстве, выделяемом при создании процесса. В 32 разрядных системах объем памяти, доступной каждому процессу, составляет 4 Гбайт. Верхняя половина этого пространства резервируется за операционной системой, а вторая половина доступна пользовательским приложениям.All process threads run in a single address space allocated when the process is created. On 32-bit systems, the amount of memory available to each process is 4 GB. The upper half of this space is reserved for the operating system, and the second half is available to user applications.
Механизм виртуальной памяти позволяет изолировать процессы друг от друга. Потоки одного процесса не могут ссылаться на адресное пространство другого процесса. Виртуальная память 130 может вовсе не соответствовать структуре физической памяти 120. Диспетчер памяти транслирует виртуальные адреса на физические, по которым реально хранятся данные. Поскольку далеко не всякий компьютер в состоянии выделить по 4 Гбайт физической памяти на каждый процесс, используется механизм подкачки (swapping). Когда оперативной памяти не хватает,The virtual memory mechanism allows isolating processes from each other. Threads from one process cannot reference the address space of another process. Virtual memory 130 may not correspond at all to the structure of
операционная система перемещает часть содержимого памяти на диск, в файл (swap file или page file), освобождая таким образом, физическую память для других процессов. Когда поток обращается к странице виртуальной памяти, записанной на диск, диспетчер виртуальной памяти загружает эту информацию с диска обратно в память. Устройство оперативно-запоминающего устройства с точки зрения потоков не различим - достаточно реализовать адресное пространство, функции ввода и вывода информации.the operating system moves part of the contents of the memory to disk, to a file (swap file or page file), thereby freeing up physical memory for other processes. When a thread accesses a virtual memory page written to disk, the virtual memory manager loads this information from disk back into memory. The device of the random access memory from the point of view of streams is not distinguishable - it is enough to implement the address space, the functions of input and output of information.
Для эмуляции процессов часто необходимо эмулировать файловую систему, особенно в тех случаях, когда необходимо обезопасить данные на диске или когда доступ к файлам ограничен. Файловой системой называется способ организации, хранения и именования данных на носителях информации. Оперируя объектами данных в виде файлов, операционная система использует файловую систему для размещения файлов на диске и обращения к ним, а также для определения атрибутов файла, разграничения доступа и т.д. С точки зрения ОС весь диск представляет собой набор кластеров. Драйверы файловой системы организуют кластеры в файлы и каталоги. Когда приложение обращается к файлу, файловая система определяет кластеры, в которых хранится файл и передает запрос на чтение данных секторов драйверу диска.To emulate processes, it is often necessary to emulate the file system, especially in cases where it is necessary to secure data on the disk or when access to files is limited. A file system is a way of organizing, storing and naming data on storage media. Operating with data objects in the form of files, the operating system uses the file system to place files on the disk and access them, as well as to determine file attributes, access control, etc. From an OS point of view, the entire disk is a collection of clusters. File system drivers organize clusters into files and directories. When the application accesses the file, the file system determines the clusters in which the file is stored and sends a request to read these sectors to the disk driver.
В тех случаях, когда программа взаимодействует с сетью передачи данных или внешними устройствами (принтер, устройства ввода-вывода), для эмуляции ее работы необходимо реализовать функции этих устройств. Необходимо, по меньшей мере, обрабатывать команды, адресуемые устройствам и эмулировать их ответ.In cases where the program interacts with a data network or external devices (printer, input-output devices), to emulate its operation, it is necessary to implement the functions of these devices. It is necessary, at least, to process commands addressed to devices and emulate their response.
После загрузки исполняемого файла или обработки кода интерпретатором в память процесса записывается машиночитаемый код. Для примера рассмотрим несколько команд на языке ассемблера, который максимально приближен к описанию операций на процессоре. Инструкции разделяются на арифметические, логические, команды перехода, прерывания и передачи данных. Для обработки каждой команды эмулятору необходимо воспроизвести работу процессора, т.е. выполнить данную команду в эмулируемой среде.After loading the executable file or processing the code by the interpreter, machine-readable code is written into the process memory. For example, consider several commands in assembly language, which is as close as possible to the description of operations on the processor. Instructions are divided into arithmetic, logical, transition, interrupt and data transfer commands. To process each command, the emulator needs to reproduce the processor, i.e. execute this command in an emulated environment.
Например, команда копирования MOV, имеющая два параметра Dest (адрес назначения) и Source (источник копирования) реализуется одной внутренней операцией Dest:=Source (для семейства процессоров ×86). Существуют команды, которые выполняются в несколько операций. Например, команда обмена Exchange, которая меняет значения, хранящиеся по двум адресам, реализуется двумя операциями Op1:=Op2, Ор2:=Ор1.For example, a MOV copy command with two parameters Dest (destination address) and Source (copy source) is implemented by one internal Dest: = Source operation (for the processor family × 86). There are commands that are executed in several operations. For example, an Exchange exchange command that changes values stored at two addresses is implemented by two operations Op1: = Op2, Op2: = Op1.
В одном из вариантов реализации эмулятора программы, исполняемой в компьютерной системе, каждый из эмулируемых модулей системы может представлять собой объектный класс: класс регистров, класс памяти, класс процессора и т.д., в которых методы класса воссоздают реальные операции. В случае процессора, методы класса будут представлять собой набор выполняемых инструкций и внутренних команд, а в случае памяти - операции записи, чтения. Большинство арифметических операций и операций для работы с адресами имеется в языках программирования и не представляет сложности для воспроизведения. Остальные команды можно реализовать с помощью отдельных функций. При этом существует возможность реализации подобного эмулятора в виде микропроцессора или микросхемы.In one embodiment of an emulator for a program executed in a computer system, each of the emulated modules of the system can be an object class: a register class, a memory class, a processor class, etc., in which class methods recreate real operations. In the case of the processor, class methods will be a set of executable instructions and internal commands, and in the case of memory, write, read. Most arithmetic operations and operations for working with addresses are available in programming languages and are not difficult to reproduce. The remaining commands can be implemented using separate functions. At the same time, it is possible to implement such an emulator in the form of a microprocessor or microcircuit.
В современных операционных системах практически все взаимодействие приложения с устройствами и сервисами компьютерной системы, например, открытие файла или загрузка веб-страницы, осуществляется через API-функции (Application Programming Interface). Последовательность вызываемых функций составляет шаблон поведения приложения, позволяет определить характер приложения и в некоторых случаях идентифицировать код.In modern operating systems, almost all interaction of an application with devices and services of a computer system, for example, opening a file or loading a web page, is carried out through the API functions (Application Programming Interface). The sequence of called functions makes up the application behavior pattern, allows you to determine the nature of the application and in some cases identify the code.
Для анализа отказоустойчивости программ определение API-функций, вызываемых установщиком или самим приложением на начальном этапе работы, также является существенным. Как правило, вызовы функций являются частью проверки системы на соответствие определенному условию.For the analysis of program fault tolerance, the definition of API functions called by the installer or the application itself at the initial stage of work is also essential. Typically, function calls are part of a system check for compliance with a specific condition.
Таблица подключаемых библиотек и адресов вызовов функций содержится в исполняемом файле. При загрузке программы в эмулятор производится замена адресов на адрес обработчика эмулятора. В ходе эмуляции кода программы ведется журнал выполняемых операций и вызовов. По данному журналу можно определить вызываемые функции и операции, которые предшествовали и следовали за каждым из вызовов. В том числе можно определить коды возвратов ошибок, возникающие исключения.A table of plug-in libraries and function call addresses is contained in an executable file. When the program is loaded into the emulator, addresses are replaced with the address of the emulator handler. During the emulation of the program code, a log of operations and calls is kept. From this log, you can determine the called functions and operations that preceded and followed each of the calls. In particular, it is possible to determine error return codes, exceptions that arise.
Рассмотрим пример трассировки программы, в котором журнал эмуляции представляет собой следующий список:Consider an example of a program trace in which the emulation log is the following list:
Список содержит вызовы функций с определенными параметрами. Основной задачей является определение поведения приложения, если вызов функции приведет к ошибке. Для этого для каждой API-функции приложению возвращается код ошибки вместо ожидаемого значения. В одном из вариантов реализации возврат ошибок производится последовательно и поочередно для каждой функции. Например, на первом запуске приложение будет обмануто и вызов функции GetProcAddress вернет 0 даже в том случае, если в реальной системе вызов функции вернул бы другое значение (0x1a494bbe), соответствующее успешному выполнению. На втором запуске вызов функции URLDownloadToFileA вернет не 0 (0xFFFFFFFF), на третьем запуске Sleep вернет не 0, на четвертом запуске DeleteFileA вернет false и так далее.The list contains function calls with specific parameters. The main task is to determine the behavior of the application if a function call leads to an error. To do this, an error code is returned to the application for each API function instead of the expected value. In one embodiment, the error is returned sequentially and alternately for each function. For example, on the first launch, the application will be tricked and the call to the GetProcAddress function will return 0 even if in the real system the call to the function would return a different value (0x1a494bbe) corresponding to successful execution. On the second start, calling the URLDownloadToFileA function will return not 0 (0xFFFFFFFF), on the third start, Sleep will return not 0, on the fourth start, DeleteFileA will return false, and so on.
При каждом запуске приложение продолжит эмулироваться до конца с учетом того, что вызов функции возвращает намеренно измененное значение, и продолжает вести журнал эмуляции. Код возврата отличный от нуля будет означать появление определенных условий, которые следует учитывать при запуске и установке приложения. Например, отсутствие функции URLDownloadToFileA в библиотеке приводит к коду ошибки 3333; невозможность соединения по ссылке URL в сети Интернет приводит к коду ошибки 3334; невозможность системы перейти в режим Sleep приводит к завершению работы приложения; невозможность удаления файла приводит к коду ошибки 7777 и т.д.Each time the application starts, it will continue to be emulated to the end, given that the function call returns an intentionally changed value, and continues to keep the emulation log. A non-zero return code will indicate certain conditions that must be considered when starting and installing the application. For example, the lack of the URLDownloadToFileA function in the library results in error code 3333; the inability to connect to the URL link on the Internet leads to error code 3334; the inability of the system to enter Sleep mode terminates the application; failure to delete the file leads to error code 7777, etc.
Для проверки полученных результатов в виде причинно-следственных цепочек, где интерпретация ошибки вызова функции является причиной, а код возврата или его трактовка является следствием, можно произвести тестирование работы приложения в реальных условиях. При этом необходимо изменить конфигурацию системы или запустить приложение в той среде, в которой намеренно не будет выполняться одно из условий. В том случае, если код возврата совпадает с результатом эмуляции, причинно-следственная связь подтверждается. Например, если попытка запуска исследуемого приложения в системе, отключенной от сети Интернет, приведет к появлению кода возврата «3334», то можно с уверенностью говорить о том, что определенная в ходе эмуляции причина возникновения ошибки верна. При проведении проверки важно учитывать тот факт, что все остальные условия работоспособности программы должны удовлетворяться, иначе исполнение программы может прекратиться еще до обработки проверяемого условия и вернуть другой код возврата.To verify the results in the form of cause-and-effect chains, where the interpretation of the error of the function call is the cause, and the return code or its interpretation is the consequence, you can test the application in real conditions. In this case, it is necessary to change the system configuration or run the application in the environment in which one of the conditions will not be fulfilled intentionally. In the event that the return code matches the result of the emulation, a causal relationship is confirmed. For example, if an attempt to launch the application under investigation in a system disconnected from the Internet results in the return code “3334”, then we can confidently say that the cause of the error identified during the emulation is correct. When conducting the verification, it is important to take into account the fact that all other conditions of the program’s operability must be satisfied, otherwise the program may stop executing before processing the condition being checked and return another return code.
Предложенный способ анализа и обработки системных ошибок при работе программного обеспечения наиболее эффективен для применения в вычислительных сетях. Одним из возможных вариантов реализации способа автоматической обработки системных ошибок может быть имплементация системы эмуляции и обработки ошибок в централизованный сервис установки и управления программным обеспечением персональных компьютеров.The proposed method for analyzing and processing system errors during software operation is most effective for use in computer networks. One of the possible ways to implement the automatic processing of system errors can be the implementation of a system for emulating and processing errors in a centralized service for installing and managing personal computer software.
На Фиг.5 показана функциональная схема варианта осуществления системы автоматической обработки системных ошибок. Система состоит из сервера администрирования 500 и агентов администрирования 530, распределенных по КВС. Агенты администрирования 530, установленные на персональных компьютерах 510, мобильных устройствах и других элементах КВС, подключенных к серверу администрирования 500, предназначены для сбора информации о ходе исполнения программных инструкций, настройке системы и обработке системных событий, в том числе ошибок. Работу агентов контролирует установленный на сервере администрирования 500 модуль управления установкой 520, который формирует задания на установку 523 нового ПО, анализирует ошибки, которые могут возникнуть в ходе установки, и хранит экспертные данные, необходимые для принятия решений в ходе обработки ошибок и настройки компьютерных систем.5 shows a functional diagram of an embodiment of a system for automatically processing system errors. The system consists of an administration server 500 and administration agents 530 distributed over the FAC. Administration agents 530 installed on personal computers 510, mobile devices, and other elements of the PIC connected to the administration server 500 are designed to collect information about the execution of program instructions, system setup, and processing of system events, including errors. The agents are monitored by the installation management module 520 installed on the administration server 500, which generates tasks for installing 523 new software, analyzes errors that may occur during installation, and stores expert data necessary for making decisions during error handling and tuning computer systems.
В составе агента и модуля управления установкой можно выделить функциональные блоки, которые в различных вариантах реализации представляют собой специальные программные модули или микросхемы.Functional blocks can be distinguished as part of the agent and the installation control module, which in various implementations are special software modules or microcircuits.
Обновление существующих приложений и установка нового программного обеспечения являются одними из ключевых задач администратора сети, который формирует список заданий на установку 523. Список установки новых программных компонент может формироваться как вручную, так и автоматически, например, добавляя новые задания при получении информации о выходе обновлений и новых версий ПО.Updating existing applications and installing new software are some of the key tasks of the network administrator, who creates a list of installation tasks 523. The installation list of new software components can be generated either manually or automatically, for example, adding new tasks when receiving information about updates and new software versions.
После того как сформировано задание, необходимо произвести установку программы на соответствующих устройствах 510 КВС прозрачно для их пользователей. Принцип прозрачности заключается в том, что для успешной установки и корректной работы программы пользователю не потребуется производить каких-либо действий, в том числе, устанавливать дополнительные устройства, соединения, драйвера и сервисы, настраивать компоненты системы и предпринимать другие действия в случае появления системной ошибки.After the task is formed, it is necessary to install the program on the corresponding devices 510 KBC transparently for their users. The principle of transparency is that for the successful installation and the correct operation of the program, the user does not need to perform any actions, including installing additional devices, connections, drivers and services, configure system components and take other actions in case of a system error.
Для соответствия этому принципу необходимо иметь представление обо всех возможных ошибках и обрабатывать их в автоматическом режиме. Анализ производится по файлу (или нескольким файлам), содержащему код программы. Это может быть файл с исходным кодом, исполняемый файл, файл специального формата, по которому можно воспроизвести работу программы или, по меньшей мере, логику работы программы. Анализ заключается в эмуляции определенных условий при исполнении кода данного файла или группы файлов, как это было описано ранее. Средство анализа в модуле управления показано на рисунке в виде блока эмулятора 522.To comply with this principle, you must have an idea of all possible errors and process them automatically. The analysis is performed using a file (or several files) containing the program code. This can be a file with source code, an executable file, a file in a special format, according to which you can reproduce the program or at least the logic of the program. The analysis consists in emulating certain conditions when executing the code of a given file or group of files, as described previously. The analysis tool in the control module is shown in the figure as an emulator block 522.
Полученные результаты в виде дерева ошибок для каждого инсталлятора с указанием причин возникновения ошибки и вариантов ее исключения сохраняются в экспертную базу данных 521 и используются для конфигурации систем, отображения справок по возникшим ошибкам, тестирования программ на совместимость.The results obtained in the form of an error tree for each installer, indicating the reasons for the error and options for eliminating it, are stored in the 521 expert database and are used to configure systems, display help for errors that have occurred, and test compatibility programs.
Для определения способов исключения системных ошибок в качестве примера в описываемом способе реализации используется экспертная система 524, в основе которой определены правила соответствия приведших к ошибке инструкций приложения и команд сценария, направленных на исправление, описание и обход ошибки. Правила имеют причинно-следственный характер. В случае анализа установщиков количество ошибок имеет ограниченное множество, в котором для каждой ошибки может быть установлено отдельное правило его решения. Правило может быть связано с конкретной API-функцией, вызов которой приводит к ошибке. Правило также может быть создано для приложения в целом. Например, если ошибка возникла из-за отсутствия доступа к файлу, то правило сопоставит ошибке решение, которое изменит атрибуты файла и настройку прав доступа приложения к данным.To determine the ways of eliminating system errors, an expert system 524 is used as an example in the described implementation method, which is based on the rules for the correspondence of application instructions and script commands that lead to error correction, description and error circumvention. The rules are causal in nature. In the case of an analysis of installers, the number of errors has a limited set, in which for each error a separate rule for solving it can be established. A rule can be associated with a specific API function, the call of which leads to an error. A rule can also be created for the application as a whole. For example, if an error occurs due to lack of access to the file, the rule will map the error to a solution that will change the file attributes and the application’s data access rights setting.
Получив задание на установку ПО, агент администрирования 530 загружает установщик ПО 531 (инсталлятор) и связанные с ним экспертные данные, в которых могут быть рекомендации по изменению конфигурации системы и дополнительные пакеты программ, без которых задание на установку будет выполнено с ошибками или некорректно. Настройку компьютерной системы и всех ее компонент производит конфигуратор 533. В некоторых вариантах реализации конфигуратор и установщик ПО 531 являются встроенными сервисами операционной системы.Having received the task for installing the software, the 530 administration agent downloads the 531 software installer (installer) and the associated expert data, which may contain recommendations for changing the system configuration and additional software packages, without which the installation task will be completed with errors or incorrectly. Configuring the computer system and all its components is performed by the configurator 533. In some implementations, the configurator and installer of software 531 are embedded services of the operating system.
Пользователь может производить установку самостоятельно, загрузив инсталлятор и отправив его на исполнение. В этом случае, а также в случае, если рекомендации по изменению конфигурации системы не были приняты, в ходе установки программы и в процессе ее работы могут возникнуть ошибки, обработать которые без обращения к службе поддержки затруднительно. Решение данной проблемы без применения описываемой технологии полностью зависит от внешних факторов. Чтобы исправить данную ситуацию, в системе автоматической обработки системных ошибок предусмотрен обработчик ошибок 532 на стороне персонального устройства 510, который перехватывает код ошибки, обращается в экспертную базу данных 521 за справкой и производит определенные в ней действия для исключения повтора ошибки.The user can perform the installation on their own by downloading the installer and sending it for execution. In this case, as well as if recommendations on changing the system configuration were not accepted, errors may occur during the installation of the program and during its operation, which is difficult to process without contacting the support service. The solution to this problem without the use of the described technology is completely dependent on external factors. To correct this situation, the automatic error handling system provides an error handler 532 on the side of the personal device 510, which intercepts the error code, contacts the expert database 521 for help, and performs the actions defined therein to prevent error repetition.
Экспертная база данных 521 пополняется по результатам анализа программ. При этом база данных 521 может храниться на сервере 500 в локальной сети, на персональном устройстве 510 или на удаленном сервере 540, доступ к которому осуществляется через глобальную сеть Интернет. Данная схема разделения баз данных наиболее оптимальна в случае, когда анализ программного обеспечения производится распределенно. В том случае, если решение для возникшей ошибки отсутствует в локальной базе данных, запрос отправляется в вышестоящий сервер администрирования. Центральным сервисом для пополнения и хранения, а также синхронизации экспертных данных является лаборатория исследования программ. В другом примере реализации, обновление и синхронизация данных могут быть децентрализованными, например, с применением Р2Р-сетей.The 521 expert database is replenished based on the results of program analysis. Moreover, the database 521 can be stored on the server 500 in the local network, on a personal device 510, or on the remote server 540, which is accessed through the global Internet. This database partitioning scheme is most optimal when the analysis of the software is performed distributed. In the event that the solution for the error that is missing is not in the local database, the request is sent to the upstream administration server. The central service for replenishment and storage, as well as synchronization of expert data, is a program research laboratory. In another implementation example, updating and synchronizing data can be decentralized, for example, using P2P networks.
На Фиг.6 изображен алгоритм работы системы автоматической обработки системных ошибок с указанием этапов, каждый из которых может выполняться на сервере администрирования 500 и на персональном устройстве КВС 510. Процесс автоматической установки нового или обновления существующего ПО начинается загрузкой нового ПО 600 (инсталляторов, упакованных файлов, исходных файлов). Данное ПО должно быть протестировано на совместимость со средой исполнения, в которую планируется установка ПО. Для этого на этапе 605 производится эмуляция процесса установки. Средствами эмулятора воспроизводится соответствующее окружение: процессор, память, ОС, файловая система и другое. Недостаток детализации эмулятора может быть скомпенсирован перенаправлением запросов реальным объектам системы. Например, часть инструкций программы может быть исполнена на реальном процессоре, вызов API-функций может быть адресован в реальную ОС, а запрос веб-серверу может быть отправлен через подключенную сеть передачи данных. Следующим этапом является построение дерева ошибок 610, которое отражает причинно-следственную связь возвращаемого значения ошибки и условий ее возникновения, фиксируемых эмулятором в модуле журналирования. Для каждой ошибки создается набор инструкций (сценарий) для исправления данной ошибки.Figure 6 shows the algorithm of the system for automatic processing of system errors with an indication of the steps, each of which can be performed on the administration server 500 and on the personal device KVS 510. The process of automatically installing new or updating existing software starts by downloading new software 600 (installers, packed files source files). This software must be tested for compatibility with the runtime environment in which it is planned to install the software. To do this, at
Запись полученных результатов в упорядоченном виде в экспертную базу данных осуществляется на этапе 615. Впоследствии данная база может содержать также информацию об эффективности примененных правил и точности описания ошибок. Далее формируется задание на установку нового ПО 620, после чего действие переходит на персональное устройство. Задание на установку нового ПО 625 содержит инсталлятор и/или ссылку на него и инструкции для приведения конфигурации системы к требуемому состоянию, которые добавляются в задание из экспертной базы данных. Получив новое задание 625, агент администрирования 530 производит установку дополнительных программных модулей, настройку программ и устройств в соответствии с рекомендациями, содержащимися в задании. Конфигурация компьютера пользователя для предотвращения появления системных ошибок производится на этапе 630. Данному этапу может предшествовать дополнительный шаг тестирования компьютерной системы для определения пунктов расхождения текущей конфигурации персонального устройства и технических требований для корректной установки и работы ПО.Record of the obtained results in an ordered form in the expert database is carried out at
Следующий этап выполнения установки нового ПО - это этап 635, на котором выполняются операции установщика: распаковка, копирование и создание файлов, редактирование системного реестра, регистрация на удаленном сервере и другие. В ходе исполнения данного процесса могут возникнуть ошибки или исключения, которые необходимо обработать 645 в автоматическом режиме. Отслеживание ошибок производится на этапе 640. Системное событие, характеризующее ошибку, перехватывается и анализируется, определяется код ошибки и условия, при которых она возникла. По этим данным осуществляется поиск связанной информации в экспертной базе данных. Обработка 645 ошибки предполагает выполнение сценария обработки для ее исправления, оповещение пользователя и/или администратора об ошибке с полным описанием причин возникновения и способов исправления ошибки. Опционально обработка ошибок позволяет уточнять экспертные данные, дополняя перечень состояний системы, приводящих к данным ошибкам, и корректировать инструкции по их исправлению. Процесс установки завершается 650, когда все возникшие ошибки обработаны, и программное обеспечение корректно установлено на персональном устройстве.The next stage of the installation of new software is
Далее описан пример компьютерной системы, архитектура которой лежит в основе сервера администрирования, персонального устройства и компьютерной системы, элементы которой воспроизводит эмулятор.The following describes an example of a computer system, the architecture of which is the basis of the administration server, personal device and computer system, the elements of which are reproduced by the emulator.
Фиг.7 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.7 is an example of a general purpose computer system, a personal computer or server 20 comprising a
Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.The personal computer 20 in turn contains a
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.The present description discloses an implementation of a system that uses a
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.Computer 20 has a
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим одним или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг.7. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.The personal computer 20 is capable of operating in a networked environment, using a network connection with another one or more
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в КВС, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.Network connections can form a local area network (LAN) 50 and a wide area network (WAN). Such networks are used in FAC, internal networks of companies and, as a rule, have access to the Internet. In LAN or WAN networks, the personal computer 20 is connected to the local area network 50 via a network adapter or
В соответствии с описанием, компоненты, этапы исполнения, структура данных, описанные выше, могут быть выполнены, используя различные типы операционных систем, компьютерных платформ, программ.In accordance with the description, components, execution steps, data structure described above can be performed using various types of operating systems, computer platforms, programs.
В заключение следует отметить, что приведенные в описании сведения являются только примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.In conclusion, it should be noted that the information provided in the description are only examples that do not limit the scope of the present invention defined by the claims.
Claims (14)
- запускают программное приложение на исполнение в эмуляторе компьютерной системы;
- эмулируют, по меньшей мере, одно состояние компьютерной системы с целью возникновения, по меньшей мере, одной ошибки при исполнении приложения;
- определяют, по меньшей мере, одну ошибку в соответствии с условиями, послужившими причиной для возникновения данной ошибки;
- формируют, по меньшей мере, один сценарий обработки ошибки;
- обновляют экспертные данные информацией, содержащей идентификатор упомянутой ошибки, условия ее возникновения и, по меньшей мере, один сценарий обработки ошибки;
- запускают приложение на компьютерной системе;
- при возникновении ошибки загружают и выполняют сценарий обработки возникшей ошибки.1. A method for automatically processing software errors, consisting of the stages in which:
- run the software application for execution in a computer system emulator;
- emulate at least one state of the computer system in order to cause at least one error in the execution of the application;
- determine at least one error in accordance with the conditions that served as the reason for the occurrence of this error;
- form at least one error processing scenario;
- update the expert data with information containing the identifier of the error mentioned, the conditions for its occurrence, and at least one error processing scenario;
- run the application on a computer system;
- when an error occurs, download and execute the script for processing the error that occurred.
- эмулятора, предназначенного для:
- воспроизведения состояния компьютерной системы с целью возникновения ошибки;
- исполнения программного приложения в воспроизведенном состоянии компьютерной системы;
- определения, по меньшей мере, одной ошибки в соответствии с условиями, послужившими причиной возникновения данной ошибки в ходе исполнения программного приложения;
- экспертной системы, связанной с эмулятором и предназначенной для:
- составления, по меньшей мере, одного сценария обработки ошибки, определенной эмулятором, в зависимости от условий, послуживших причиной возникновения данной ошибки;
- обновления экспертной базы данных информацией, содержащей идентификатор упомянутой ошибки, условия ее возникновения и, по меньшей мере, один сценарий обработки ошибки;
- экспертной базы данных, связанной с экспертной системой и предназначенной для:
- хранения идентификаторов ошибок, условий возникновения ошибок и сценариев обработки ошибок для соответствующего приложения;
- обработчика ошибок, связанного с экспертной базой данных, предназначенного для:
- определения факта возникновения ошибки при исполнении программного приложения на компьютерной системе;
- загрузки соответствующего для данной ошибки сценария обработки ошибки из экспертной базы данных;
- выполнения сценария обработки соответствующей ошибки.10. A system for automatically processing software errors, consisting of:
- an emulator designed for:
- reproducing the state of the computer system in order to cause an error;
- execution of the software application in the reproduced state of the computer system;
- determination of at least one error in accordance with the conditions that caused this error to occur during the execution of the software application;
- expert system associated with the emulator and designed for:
- compiling at least one error processing scenario defined by the emulator, depending on the conditions that caused this error to occur;
- updating the expert database with information containing the identifier of the mentioned error, the conditions for its occurrence and at least one error processing scenario;
- expert database related to the expert system and intended for:
- storing error identifiers, error conditions, and error processing scenarios for the corresponding application;
- an error handler associated with an expert database intended for:
- determining the occurrence of an error when executing a software application on a computer system;
- loading the error processing script appropriate for the given error from the expert database;
- execution of the script for processing the corresponding error.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| RU2012141465/08A RU2521265C2 (en) | 2012-09-28 | 2012-09-28 | System and method for automatic processing of software system errors |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| RU2012141465/08A RU2521265C2 (en) | 2012-09-28 | 2012-09-28 | System and method for automatic processing of software system errors |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| RU2012141465A RU2012141465A (en) | 2014-04-10 |
| RU2521265C2 true RU2521265C2 (en) | 2014-06-27 |
Family
ID=50435711
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| RU2012141465/08A RU2521265C2 (en) | 2012-09-28 | 2012-09-28 | System and method for automatic processing of software system errors |
Country Status (1)
| Country | Link |
|---|---|
| RU (1) | RU2521265C2 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9563499B2 (en) | 2014-08-08 | 2017-02-07 | Parallels International Gmbh | Processing run-time error messages and implementing security policies in web hosting |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6378128B1 (en) * | 1998-10-08 | 2002-04-23 | Microsoft Corporation | System and method for dynamically modifying an install-set |
| US7203881B1 (en) * | 2004-06-29 | 2007-04-10 | Sun Microsystems, Inc. | System and method for simulating system operation |
| RU2007106437A (en) * | 2004-08-04 | 2008-09-10 | Роберт Бош ГмбХ (DE) | METHOD, OPERATING SYSTEM AND COMPUTING DEVICE FOR PERFORMING A COMPUTER PROGRAM |
| RU2007135770A (en) * | 2007-09-27 | 2009-04-10 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." (KR) | ERROR SYSTEM AND METHOD |
-
2012
- 2012-09-28 RU RU2012141465/08A patent/RU2521265C2/en active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6378128B1 (en) * | 1998-10-08 | 2002-04-23 | Microsoft Corporation | System and method for dynamically modifying an install-set |
| US7203881B1 (en) * | 2004-06-29 | 2007-04-10 | Sun Microsystems, Inc. | System and method for simulating system operation |
| RU2007106437A (en) * | 2004-08-04 | 2008-09-10 | Роберт Бош ГмбХ (DE) | METHOD, OPERATING SYSTEM AND COMPUTING DEVICE FOR PERFORMING A COMPUTER PROGRAM |
| RU2007135770A (en) * | 2007-09-27 | 2009-04-10 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." (KR) | ERROR SYSTEM AND METHOD |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9563499B2 (en) | 2014-08-08 | 2017-02-07 | Parallels International Gmbh | Processing run-time error messages and implementing security policies in web hosting |
Also Published As
| Publication number | Publication date |
|---|---|
| RU2012141465A (en) | 2014-04-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8621279B1 (en) | System and method for generating emulation-based scenarios for Error Handling | |
| Olivier et al. | A binary-compatible unikernel | |
| RU2443012C2 (en) | Configuration of isolated extensions and device drivers | |
| US5911073A (en) | Method and apparatus for dynamic process monitoring through an ancillary control code system | |
| KR101806090B1 (en) | Generic unpacking of applications for malware detection | |
| US20130103380A1 (en) | System and method for controlling multiple computer peripheral devices using a generic driver | |
| JP2017146966A (en) | Method and system for extending function to package file | |
| US11573787B1 (en) | Hot reloading a running application with an unsaved source code change | |
| WO2008113291A1 (en) | Method and system for calling functions | |
| Hayden et al. | State transfer for clear and efficient runtime updates | |
| CN111880804A (en) | Application program code processing method and device | |
| US8904346B1 (en) | Method and system for automated load testing of web applications | |
| CN115617668A (en) | A compatibility test method, device and equipment | |
| US11720348B2 (en) | Computing node allocation based on build process specifications in continuous integration environments | |
| Ki et al. | Reptor: Enabling api virtualization on android for platform openness | |
| US9841982B2 (en) | Locating import class files at alternate locations than specified in classpath information | |
| JP2023547070A (en) | Reloading updated shared libraries without stopping application execution | |
| CN118051421A (en) | IO delay fault injection method, device, electronic device and storage medium | |
| CN100465893C (en) | A method for dynamic upgrading of embedded operating system driver | |
| RU2521265C2 (en) | System and method for automatic processing of software system errors | |
| Bell et al. | Vroom: Faster Build Processes for Java | |
| US12360759B2 (en) | Downgrading database software via a downgradability test | |
| CN114817063B (en) | Simulation test method, device and storage medium | |
| PR | CHRISTIAN DEBOVI PAIM DE OLIVEIRA | |
| WO2007144891A1 (en) | A method for the distribution of software processes to a plurality of computers |