When working with NT services your account must have the appropriate privileges. Please read the User Permissions topic for detailed information about User Privileges.
To use Bug Validator with NT Services you can inject Bug Validator into the service, or you can link a small library to your application and call two functions in the library. The latter approach is required if you wish to monitor the service from the instant it is started using the Windows Control Panel.
The NT Service API is provided to enable Bug Validator to work with services. However the API works just as well with normal applications. The same considerations (discussed later) apply to normal applications as to services when using this API.
When the NT Service API is used, source code symbols are acquired in the stub and sent to the Bug Validator user interface. This has two performance implications:
•Sending symbols from the stub to the user interface is slower than acquiring the symbols in the user interface because the symbols must be sent from the stub to the user interface. Symbols are only sent once, and only sent on a just-in-time basis, so there is no up front performance penalty of sending many symbols when only one symbol is used. Symbols are accurate to 16 byte boundaries in this case. Tests have shown that for most source code related to allocations, each line is separated by 16 bytes or more, so this is adequate resolution.
•The stub will use marginally more memory for the bit array used to track which addresses have been sent to the user interface. At the very worst case (which cannot happen) this extra memory use is 16MB. In practice, depending on the size of your service, this overhead is probably 1MB. The worst case is a 2GB DLL containing function calls every 16 bytes.
If at all possible please run your service on the same user account that you run the Bug Validator user interface.