Universal development environment. Universal integrated development environments. Debugging Tools and Aids

[Additional Information]

Ifs Kit help or DDK help: Driver Writers Guide\Driver Development Environment

[L. 1] Chapter 18. Buildind and debugging drivers

[L. 2] Chapter 8. Device Driver Structure; Chapter 9. Debugging a Device Driver

In this section we will cover the following questions:

    Required software

    Installation and configuration

Required software:

    Operating system, Service Pack and debugging information

    Compiler

    Debugging Tools and Aids

operating system has 2 delivery options:

    Checked build (Debug build)

    Free build (Retail build)

Free build – standard delivery. Full optimization is enabled and there are no specialized debugging capabilities.

Checked build - specially designed for use by driver developers. There is almost no optimization, which contributes to a better understanding of the code when working under a debugger. Specialized debugging code is built into many functions to check the correctness of parameters and catch error situations. Available only as part of an MSDN subscription.

Included with the OS we will need debugging information (files with the extension .dbg and .pdb). It contains a mapping of addresses within a particular executable to symbolic names of functions and variables and can be used by debuggers.

It should be emphasized that the symbolic information is different for the checked and free versions of the system.

After installing the OS, you must install the latest version of the SP. We must remember that SP replaces almost all system files, and therefore they require new symbolic information.

For checked and free versions of the system, separate versions of SP are required. In addition, the OS and SP may differ in support for cryptographic algorithms (40-128 bits), which may affect the ability to install the SP.

Compiler. Although in principle compilers from different manufacturers can be used, the structure of header files and environment variables supplied by Microsoft for creating drivers is optimized for use of the Microsoft Visual C compiler. The compiler version must be at least 4.1, but the actual version required will depend on two other components - SDK and DDK.

MSDN Library. When installing Developer Studio, you are prompted to install the MSDN Library, a product that provides information about software development on all supported Microsoft platforms.

SDK. In earlier versions the kit was called Win32 SDK, Now - Platform SDK. This is an optional but desirable component for driver development. Contains header files, lib files, documentation, and user-level programming examples using the Win32 subsystem.

DDK. There are DDKs for Windows 95, Windows 98, Windows NT 4.0, and Windows 2000. The DDK must match the platform for which the driver is intended to be created, but not necessarily the platform on which the driver is created. We will use the DDK for Windows NT 4.0. The DDK contains header files, documentation, and examples of writing drivers, excluding file system drivers.

IFS Kit. Package for creating file system drivers. Available as a separate product from your MSDN subscription. There are versions for Windows 98, Windows NT 4.0, and Windows 2000. The latest versions include the DDK, but with a different set of examples. Earlier versions required the DDK to be installed first.

There is a relationship between the listed set of components:

The compiler is installed first. As already mentioned, although it is possible to use compilers from other companies, the SDK and DDK assume the presence of Visual C, and depending on the release time of the SDK and DDK, different versions of the compiler are assumed (when linking, libraries from different versions will be indicated - this is the SDK, or they will not launch correctly command files for initializing environment variables - this is what DDK is guilty of). In addition, earlier versions of the DDK required the SDK to be installed. Another possible problem is that when using Windows NT Workstation, system environment variables may not be set.

Location of command files for setting environment variables:

    VC98\bin\vcvars32.bat

    Mstools\setenv.bat

    Ddk\bin\setenv.bat

If there is a version of the DDK that requires an SDK, the lines for checking the presence of the SDK and launching its setenv.bat file should be excluded from the Ddk\bin\setenv.bat file, and a call to vcvars32.bat should be written, as is done at the workplaces where the l/r.

Debugging tools and aids.

The choice of debugging tool is an important point that can influence the set of required hardware.

Microsoft products come with 4 debuggers:

KD,a console program for debugging kernel mode drivers, is located in the directory bin DDK package for NT4 and Win2000. (i386kd.exe, ia64kd.exe, alphakd.exe, mipskd.exe)

NTSD,a console program for debugging user-mode programs and drivers,located in the directory system32 OS Windows 2000.

CDB,NTSD variant, is contained in the directory bin DDK package for Windows 2000.

WinDbg,a graphical debugger for debugging both user-mode and kernel-mode code, is contained in the directory bin DDK package for Win2000 and Platform SDK.

Of all the options listed, only the WinDbg debugger is worthy of mention. It provides a convenient user interface, but is very unstable, poorly documented, and lacks support from Microsoft. To use this product to debug drivers, you need 2 computers - Development Platform and Test Platform. The debugger is available for all supported platforms, and cross-platform debugging is possible. Supports operation on multiprocessor systems.

Many developers rightly consider SoftICE from NuMega to be the best debugger for debugging OS and drivers. Stable in operation, well documented, support from the company. Debugging is carried out on the same computer on which the development was carried out, but remote debugging is also possible using the DOS program serial.exe. The user interface can be considered a drawback, but this is a matter of habit. More serious disadvantages are the limitation of processor support to the Intel platform, as well as the lack of support for multiprocessor systems (however, the system is still actively being developed).

At workstations for performing L/R, SoftIce is installed as part of the NuMega Driver Studio v 2.0 package. Full documentation is available in pdf format.

There are also a number of auxiliary tools at the workplace for convenience in studying the OS and driver behavior. Some of these tools are supplied with source code, and all of them can be a good visual aid for writing drivers. Let's list these means:

    Monitor – view trace information output by drivers and application programs.

    Winobj - Object Manager Namespace View

    Handleex – information about running processes, all descriptors opened by them and loaded dll modules.

    Filemon – view file system activity, including mailslot and npfs

    Regmon – tracking of accesses to the registry, including at the system boot stage

    Portmon – tracking access to serial and parallel ports

    Tdimon - TDI request tracking.

    Tokenmon – tracking of system operation related to srm.

    Integrated Development Environment- a software package designed for the productive development of application systems and consisting of: source text and resource editors; from the compiler; from debugger; from project management and operational assistance tools; + including… … Financial Dictionary

    Integrated Application Development Environment

    Software development environment- (Integrated) software development environment (IDE, Integrated development environment) a system of software tools used by programmers to develop software. Typically the development environment includes... ... Wikipedia

    software development environment- 3.62 software development environment: An integrated system that includes hardware, software, software, hardware, procedures and documents necessary for software development. Source: GOST R 51904 2002: Software for embedded... ...

    Eclipse (development environment)- This term has other meanings, see Eclipse. Eclipse... Wikipedia

    Delphi (development environment)- This term has other meanings, see Delphi. Embarcadero Delphi ... Wikipedia

    Wednesday- 3.3.3 environment: Relationship between syntax and semantics. Note In the context of this standard, the environment object binds to the generic variable object (syntax) the corresponding value (semantics) represented by the object... ... Dictionary-reference book of terms of normative and technical documentation

    software verification/testing environment- 3.63 software verification/testing environment: An integrated system that includes hardware, software, firmware, procedures and documents necessary to perform software verification/testing. Elements of this environment... ... Dictionary-reference book of terms of normative and technical documentation

    Turbo Pascal- This term has other meanings, see Turbo. Turbo Pascal Development environment Turbo Pascal 7.1 Type ... Wikipedia

    THE DRAGON- This article is proposed for deletion. An explanation of the reasons and the corresponding discussion can be found on the Wikipedia page: To be deleted / September 28, 2012. While the discussion process is not completed, the article can ... Wikipedia

Books

  • , I. I. Popov , O. L. Golitsyna , The basic principles of programming in high-level languages ​​are considered: the basic control structures of programming; standard data types; data structures; procedures and functions;… Category: Manuals and reference books Series: Laser equipment and technology Publisher: Forum, Manufacturer: Forum, Buy for 2039 UAH (Ukraine only)
  • Programming in high-level languages: Textbook, Golitsyna O.L. , The basic principles of programming in high-level languages ​​are considered: the basic control structures of programming; standard data types; data structures; procedures and functions;… Category:

NetBeans IDE- integrated application development environment, free and open source IDE.
Designed for professional development of desktop applications, web applications, corporate systems, programs for mobile devices. NetBeans is the only IDE that will suit both the novice developer and the professional.

Program features:

  • Supported programming languages: Java, JavaFX, PHP, JavaScript, Ruby, Groovy, Python and C/C++, as well as all markup languages: HTML, XML and CSS styles.
  • Supports technologies: J2SE, J2EE, J2ME, JavaFX SDK, PHP Zend framework, UML, SOA, Ajax, Ruby on Rails, Groovy and Grails.
  • NetBeans IDE is a platform for building desktop applications with a functional user interface, because... is a framework for the Swing Java library. This will save a lot of time for those who are not too lazy to familiarize themselves with the features of programming on the NetBeans platform.
  • NetBeans IDE is a platform for creating plugins and extending its functionality.
  • Main functions: refactoring, profiling, working with CVS and SVN, working with a remote server via FTP, visual editor of user interfaces, syntax highlighting, autocompletion, displaying help on the fly, the ability to use ready-made code templates, integration with servers - automatic deployment of applications, server management, etc.
  • Advanced capabilities for working with databases - built-in client for databases - MySQL, Postgres, Oracle, etc., SQL query editor.

Detailed description of NetBeans features - NetBeans is a universal IDE.
NetBeans for WEB development - NetBeans and PHP - setting up NetBeans IDE for WEB programming.
Programming PHP Smarty in NetBeans.
Working with Apache Tomcat in NetBeans - Setting up and getting started with Apache Tomcat server in NetBeans IDE.

Eclipse is a free and open source software platform controlled by the Eclipse Foundation. It is written in the Java programming language and the main purpose of its creation is to increase the productivity of the software development process.

IDEs developed on the Eclipse platform are used to create software in various programming languages. Eclipse is a platform for developing any integrated programming environment and almost any client software.

How to Use Eclipse and Where to Download - Eclipse Platform Overview.
Installation and familiarization with the interface and principles of Eclipse IDE.

Aptana Studio- free IDE, professional development environment for Web 2.0 applications.

Used to create web applications that support all modern technologies - HTML5, CSS3, JavaScript, Ruby, Rails, PHP and Python.

Key features of Aptana Studio:

  • It has powerful functions for working with HTML, CSS, JavaScript, PHP, Ruby code - editing, viewing the code structure, instant preview in common browser models.
  • Works using the latest HTML 5 and CSS3 specifications. The developer is provided with detailed information about the support of each element in common web browsers.
  • The built-in debugger allows you to set breakpoints, view variable values, and monitor program execution. There is also an integrated Ruby and Rails debugger.
  • The Application Deployment Wizard allows you to work with remote projects using FTP, SFTP, FTPS protocols.
  • Supporting collaboration on projects.
  • Command line support.
  • Advanced options for customizing the IDE, the ability to create custom scripts.
  • Plug-ins to expand the functionality of the IDE.

Download Aptana Studio 3 from the official website: http://www.aptana.com/products/studio3/download.html

Code::Blocks is a free and open source C and C++ IDE, the application is extensible, fully customizable and can run on multiple platforms.

This software is developed for Windows, Linux, FreeBSD and Mac OS X. It is created using plugins and can be extended by installing or creating additional components.

Features of CodeBlocks:

  • The program has a WYSIWYG editor for the wxWidgets library for developing a graphical user interface (GUI).
  • Support for several compilers: MinGW/GCC C/C++, Microsoft Visual C++, Borland C++, etc.
  • A customizable and extensible tabbed user interface with syntax highlighting, code block folding, code completion, smart indentation, and a class browser.
  • It has a fast build system and uses workspaces to combine multiple projects.
  • Code::Blocks has advanced debugging functionality and supports GNU GDB and MS CDB.
  • In addition, the program has full support for breakpoints, call stack display, disassembler, custom memory dump and profiler information display (GNU Profiler).
  • The IDE is MSVC and Dev-C++ compatible and can import projects and workspaces.

Download Code::Blocks for Windows, Linux or Mac OS X: http://www.codeblocks.org/downloads

Dev-C++- integrated development environment for C and C++, full-featured C++ IDE.

DevCpp features:

  • Convenient editor with syntax highlighting, line numbering, auto-indentation, etc.
  • Possibility of code completion for ease of use and increased productivity.
  • Code blanks and templates for insertion.
  • Use bookmarks in the editor to quickly navigate through the code.
  • Export source files or the entire project to HTML or RTF to publish the source code on your website.
  • Built-in project manager.
  • Importing projects from MS Visual C++.
  • Ability to configure file associations by extension - c, cpp, h, etc.
  • The class navigator has two overview options - viewing functions, classes and their members both for the entire project and for the currently edited file.
  • Flexible configuration of the working environment, editor and compiler, a large number of different options.
  • Uses Mingw GCC compiler, can work with any GCC compiler.
  • Possibility of project debugging - built-in GDB debugger.
  • It is possible to work with CVS (downloaded separately).
  • There is a portable version of the program that does not require installation.
  • Multilingual user interface with support for Russian and Ukrainian languages.

To start using the program right now,
read the article


Convenience and speed of development.

Alexander Makarchuk, qb
Increasing the speed and convenience of development.

Alexander Smirnov, Greensight
Speeding up development, reducing errors, just convenience.

2. Is it important to train developers to use an IDE? Why?

Alexey Fedorov, Classmates
This is an interesting idea. Surely there are companies that are ready to invest in this.

,ADV
If the developer does not know the basic things of the IDE, then development will take longer. In the modern world, this is already a requirement for the profession.

Alexander Makarchuk, qb
No no need. To teach is to impose your own. Each developer works on what is convenient for him. At the same time, you can always show the advantages of your IDE.

Alexander Smirnov, Greensight
This is rather a question for each developer separately - what is more convenient for him. But in the early stages, smart autocompletion and error highlighting are almost irreplaceable.

3. Most quality IDEs are paid. Is it worth spending money on licenses?

Alexey Fedorov, Classmates
Costs. The current market situation is that paid IDEs are generally much better than free ones.

Alexey Persianov, Mikhail Parfenyuk,ADV
If you want a quality IDE, it's worth the investment. If you don't support quality IDE developers with rubles, then they won't make quality IDEs

Alexander Makarchuk, qb
If it is advisable, then, of course, it is necessary. Time is money.

Alexander Smirnov, Greensight
Depending on needs and funds. Some people need Sublime, some want to use Jetbrains products, others inevitably have to buy Xcode.

4. What are modern IDEs missing? Could a giant like JetBrains emerge in this market?

Alexey Fedorov, Classmates
Maybe. But it will be difficult to compete with them: developing an IDE requires hundreds of man-years of work and tens of millions of dollars.

Alexey Persianov, Mikhail Parfenyuk,ADV
At the moment, JetBrains has captured this market, and it is unlikely that anything better will appear in the near future.

Alexander Makarchuk, qb
There will always be something new coming out, and IDEs are no exception. The advantage of new projects is always that they take into account the shortcomings of old ones.

Alexander Smirnov, Greensight
If something better comes along, then why not.

5. What other tools exist or may appear that speed up development and make life easier for developers?

Alexey Fedorov, Classmates
Project builders, bug trackers, version control systems, continuous build and integration systems and many, many others.

Alexey Persianov, Mikhail Parfenyuk,ADV
For example, CI systems.

Alexander Smirnov, Greensight
Hard to tell. More and more third-party tools are being integrated into IDEs rather than existing separately.

6. What trends in the development of IDE functionality could you note in recent years?

Alexey Fedorov, Classmates
Integration with other systems, such as bug trackers, VCS or CI servers. And of course, speed - modern IDEs slow down much less than 10 years ago.

Alexey Persianov, Mikhail Parfenyuk,ADV
Transition of all paid IDEs to subscription distribution.

Alexander Makarchuk, qb
Subscriptions. It is always easier to pay a smaller amount, especially if you have doubts about the choice or are not yet used to the instrument.

Alexander Smirnov, Greensight
Development of plugins, integrations with third-party utilities and software, improvement of autocompletion.

The most important element in the application development process is choosing the right IDE, which depends not only on the platform, but also on your own level of expertise. Let's get acquainted with the most popular of them using the “by contradiction” method, presenting not so much their advantages as the most common reproaches from developers.

Let's start with the official representatives of the mobile market leaders: Windows, Google and Apple.

Visual Studio 2015

Description: one of the oldest software products for creating both console applications and those with a graphical interface. Adding third-party plugins allows you to significantly expand the functionality of the environment, including to a cross-platform state.

Disadvantages: it will simply be impossible for a beginner to figure out Visual Studio on his own without taking special courses and reading literature. This product is more likely for experienced developers who pay attention to the quality of the editor and testing functions.

Android Studio

Description: a relatively young and rapidly developing IDE, aimed at Android application developers.

Disadvantages: poor personalization options appear in the code editor and general settings. It's a small thing, but unpleasant.

XCode

Description: IDE focused on creating applications for OS X and iOS. For using the Objective C and Swift languages, this is the best solution today, and for some tasks, the only solution.

Disadvantages: many developers complain about the stability of the environment, forcing them to make additional changes to their projects after the release of the next version. Additionally, XCode is a relatively difficult IDE for a newbie to learn about. That is why we recommend that you go through ours. Here we will look at the intricacies of working with this IDE.

From the official representatives, let's move on to universal cross-platform development environments:

Xamarin Studio

Description: a popular application development tool for Windows, Phone, Android and iOS, essentially using only one language - C#. In addition to Xamarin Studio itself, you can also use a plugin for Visual Studio.

Disadvantages: minor, but nevertheless regular errors, both directly in the IDE itself and in the output code. Also, despite the reputation of a cross-platform environment, porting ready-made applications to Xamarin is quite difficult.

IntelliJ IDEA

Description: An IDE developed by JetBrains that allows you to create programs in many popular languages, including Java, JavaScript, Python, Ruby, Groovy, Scala, PHP, C, C++.

Disadvantages: performance. The agonizing wait for compilation, recompilation, testing to complete is sometimes really annoying.

Appcelerator Titanium

Description: a platform for quickly creating console and graphical applications for all available devices.

Disadvantages: the capabilities provided by Appcelerator Titanium also have a downside: generated errors in the code, artificial limitations, and insufficient documentation.

Eclipse

Description: The development environment, initially focused on working with Java, has become famous for its large number of external modules that significantly expand its functionality (including the number of supported languages).

Disadvantages: significant lack of documentation, no unified developer community.

Netbeans

Description: a powerful IDE for developing applications in Java, JavaScript, Python, PHP, C, C++ and even Ada.

Disadvantages: low performance due to the all-in-one concept. Some plugins (including those for developing Android applications) have significant functionality limitations.

PhoneGap

Description: an unusual environment for developing cross-platform applications that does not require knowledge of “native” languages. That is, in order to create an application for Android, you do not need knowledge of Java. JavaScript is used in conjunction with HTML5 and CSS3.

Disadvantages: limited functionality caused directly by the main idea of ​​​​a non-target development environment.

What IDEs do you use? And what are their disadvantages?