Useful Tools for Creating Components and Troubleshooting Configurations
Several tools exist outside the Windows Embedded Standard 2009 toolkit (known as Windows Embedded Studio), some from Microsoft and some from other parties, that are useful for creating components and configurations in Windows Embedded Standard 2009 and troubleshooting run-time images. This article is a pointer to some of those tools. This article contains information about how each tool is used with Windows Embedded Standard 2009, and provides download locations and links to comprehensive documentation.
You can use two tools described here, InCtrl5 and AShampoo Uninstaller, for component creation and configuration modification. You can:
Determine what software installers do.
Determine how device drivers are installed.
Find registry keys that the Windows XP user interface controls.
Discover what happens when a program is first run.
Determine what system changes are made when settings are changed.
A third tool, Component Helper, is a tool that takes a snapshot of the system before installation of an application and again after installation, and generates a starter component for that application.
These tools run on a reference system with a desktop operating system, such as XP Professional.
InCtrl5, offered for sale by PC Magazine, is a tool that compares the differences in a static system at two points in time. When it first runs, InCtrl5 takes a static snapshot of the system. This process can be customized to individual registry branches and .ini files. InCtrl5 runs on all Windows operating systems that are used as reference. You can direct InCtrl5 to then run a program immediately or you can set it to run after you modify the system.
After you run InCtrl5, it takes another static system snapshot, compares that snapshot to the previous one, and reports the differences. InCtrl5 offers a graphical user interface (GUI) for all aspects of its operation.
You can download InCtrl5 from this Web site. InCtrl5 comes complete with Delphi source code.
AShampoo Uninstaller has an Installation Monitor feature that provides snapshot capabilities in which it logs all files and registry key activity during the installation of an application or driver on a reference system.
You can purchase AShampoo Uninstaller from this Web site.
Component Helper tool takes a snapshot of the system before installation of an application and again after installation. Then it compares the snapshots for file and registry differences. Component Helper goes one step further than other snapshot tools by creating a starter component (.sld file) that contains the files and registry key resources for the application or driver. Component Helper also collects all the physical files in an associated repository. This saves time for a developer who is componentizing an application.
Component Helper can be purchased as part of the Windows XP Embedded Supplemental Toolkit - Tools Release 2 at this Web site.
Dependency Walker helps componentize applications and drivers.
Dependency Walker scans 32-bit and 64-bit Microsoft Windows modules and presents a hierarchical tree diagram of dependent modules. It can scan .exe, .dll, .sys, .ocx, or other executable modules designed for running on Windows. Dependency Walker lists the dependent modules in a tree view under the calling module and marks where they are duplicated higher in the tree. It provides full module information.
On its own, Dependency Walker is a great tool for discovering the static dependencies of any Windows code module. It also enables the discovery of dynamically loaded modules through the LoadLibrary or GetProcAddress function calls. Dependency Walker also includes a console mode and a useful GUI, and it can include undecorated C++ module names.
Dependency Walker is a useful tool for building components. It performs the following functions:
Lists all known dependencies of a module.
Provides a non-GUI console mode so that you can use it in batch files. This is helpful for automating tasks.
Contains profiling and child processes so that you can do iterative dependency searching.
Generally, only the first-order dependencies are relevant to the componentization process. After these Windows files are identified, you can use Windows Embedded Studio tools, such as Target Designer or Component Designer, to identify the component that contains the files.
You can download Dependency Walker for free from this Web site.
Component Hunter is a component search tool. You can trace component relationships, do static analysis of files to find dependencies on Windows files, find the owning components for these Windows files, and search for components based on registry key, value name, and value, in addition to file name.
Component Hunter is a quick reference tool that can help when you are creating custom components, because it provides an easy way to mine the embedded database for component relationships.
Component Hunter can be purchased as part of the Windows XP Embedded Supplemental Toolkit - Tools Release 2 at this Web site.
SLDX Assistant is a command-line tool for searching for information in a component, comparing components or comparing configuration (.slx) files.
SLDX Assistant can be purchased as part of the Windows XP Embedded Supplemental Toolkit - Tools Release 2 at this Web site.
Windiff.exe is a tool that graphically compares the contents of two ASCII files, or the contents of two folders that contain ASCII files, to verify that they are the same. In the context of Windows Embedded Standard 2009, you can use Windiff.exe to compare the build logs of two runtime configurations to see how they differ.
The Windows XP Professional CD-ROM includes WinDiff.exe in the Support\Tools folder. To install the support tools, run Setup.exe from the Support\Tools folder. Every service pack for Windows XP Professional also includes Windiff.exe also in the Support.cab file.
For more information about how to use Windiff.exe, see this Microsoft Web site.
Sysinternals offers several tools that are useful for analyzing and troubleshooting runtime images. Process Monitor is one of the most frequently used. Sysinternals was acquired by Microsoft in 2006.
Process Monitor is a monitoring tool for Windows that shows real-time file system, registry and process/thread activity. It combines the features of two legacy Sysinternals utilities, Filemon and Regmon, and adds new features and improvements. These include rich and nondestructive filtering, comprehensive event properties such as session IDs and user names, reliable process information, full thread stacks with integrated symbol support for each operation, and concurrent logging to a file.
On Windows Embedded Standard 2009, you typically use it to troubleshoot applications that are running on the run-time image. It is useful in several ways:
When you are troubleshooting new components, you can run it on the embedded device to find missing files, registry keys, and data.
When you are building new components, you can use it to find required files and registry keys that are accessed dynamically.
You can log comparisons between a working and a nonworking system to help discover missing registry keys and data.
Application Verifier is not a tool specific to Windows Embedded Standard 2009. You can use it to help with the development of any Win32 programs.
It is a run-time verification tool for native code that assists in finding subtle programming errors that can be difficult to identify with typical application testing. It is designed specifically to help detect and help debug memory corruptions and critical security vulnerabilities. App Verifier monitors a native application's interaction with the Windows OS by profiling its use of objects, the registry, the file system, and Win32 APIs, including heaps, handles, locks, and so on. This monitoring identifies issues when and where they are discovered. Application Verifier also includes checks to predict how well an application may perform under different account privileges.
This tool can help reduce the time that is required to develop and test an application that is designed for Windows Embedded Standard 2009 run-time images or other Windows operating systems. You can install it on a Windows XP Professional development computer that is also running the application under development.
You can download Application Verifier from this Microsoft Web site.
Windows Embedded developers frequently work with drivers that they have not developed. Driver Verifier is a tool that can help in verifying the quality of the driver. It ships as part of the Windows OS (%WINDIR%\System32\Verifier.exe).
Driver Verifier is used for monitoring Windows kernel-mode drivers and graphics drivers to make sure that drivers are not making unauthorized function calls or causing system corruption. Verifier runs on the live installation of Windows where the driver that you want to verify is installed. Driver Verifier does not require source code to perform its analysis of the driver.
If you do not want to use verifier.exe from a Windows XP Professional system, you can download Driver Verifier as part of the Windows Driver Kit (WDK) from this Microsoft Web site.
Microsoft Debugging Tools
Microsoft Debugging Tools include the kernel debugger. This is a system-level symbolic debugger. The kernel debugger contains several parts pieces that work independently:
The OS to be debugged (known as the Host) starts Windows with the kernel debugger enabled (all Windows NT-based systems and Windows XP-based systems ship with this capability).
The OS that is running the debugger (known as the Remote) connects to the host through a communications port (COM port), universal serial bus (USB) port, or port 1394.
The Remote OS captures debug output and provides for debug-level control of the Host.
Two versions of the debugger exist, one for command-line control (kd.exe) and the second that provides a GUI interface (Windbg.exe). Both provide similar control over the Host and provide mechanisms for other computers to control the Remote debugger over the network. Both can be run with or without debugging symbols, although the presence of symbols leads to a richer and more productive debugging environment. If you use the Microsoft Debugging Tools to debug your own drivers or applications, we recommend that you generate symbols as part of the build process for that driver or application.
Windows XP Professional also provides the NT Symbolic Debugger (NTSD). This tool provides a command-line symbolic debugger for user-mode applications. The output from NTSD can be piped through the kernel debugger on the Host. This provides both user-mode and kernel-mode remote debugging capabilities.
You can use the kernel debugger to:
Troubleshoot Stop error codes.
Monitor the startup process on a device without a graphical user interface.
You can download the Microsoft Debugging Tools and symbols from this Microsoft Web site.