Root > Integral parts > Options > Features page > BugID page

BugID page

Previous pageReturn to chapter overviewNext page   

This is "Bug ID" page in EurekaLog project's options.

 

 

BugID options

 

These options allow you to customize BugID generation without need to write your own event handlers. Each option on this page will include (when checked) or exclude (when unchecked) corresponding information from BugID generation. In other words, if some option is checked - then two exceptions will be considered to be the same if both have the same information (and exceptions will be considered to be different - if information is different). If some option is unchecked - then it will have no effect on comparison of exceptions.

 

Important Note: if all options on this page are disabled - then each exception will have an unique BugID.

 

1. "Project ID" option will include Project ID (PID). Project ID is a GUID value which is unique for each project. It is used by EurekaLog to identify projects. Different projects are supposed to have different project IDs.

 

By default - project ID is extracted from .dproj, .bdsproj, .cproj files and then stored in base settings (.eof file). You may specify project ID manually by using ecc32 with --el_pid switch.

 

It is usually a good idea to enable this option when you are going to send reports to bug tracker or any other type of centralized storage. That way exceptions from one project will not be mixed with exceptions from other project.

 

 

2. "Exception module ID/name" option will include Module ID of executable module in which exception has occurred. Module ID is module name for non-EurekaLog modules, it is GUID (Project ID) for EurekaLog modules.

 

If you turn this option off - be sure you are using some other options to identify exception.

 

 

3. "Exception module version" option will include version number. Version information is taken from executable version info block.

 

If you enable this option - then same exception from different versions of your application will be considered as two different exceptions. This is useful option to be used with bug trackers or any other system which sorts bug reports by version.

 

 

4. "Exception module compilation date/time" option will include compilation date/time of exception's module.

 

This option is very similar to "Exception module version" option. Usually you should add a version information to your modules and use  "Exception module version" option instead. Use "Exception module compilation date/time" option only when you are working with modules without version information.

 

 

5. "Exception class (and error codes for some exception types)" option will include name of exception object's class (such as 'EAccessViolation', etc.). Additionally, some exception types (such as EOSError or EDatabaseError, etc.) will include an error code or error message - to distinguish between different exceptions of the same class.

 

If you turn this option off - be sure you are using some other options to identify exception.

 

 

6. "Exact exception message" option will include text message from exception object.

 

Since exception message may include localized parts (such as messages from OS or your own localizations) as well as variable parts (such as file names in message text) - it is not a good idea to enable this option, because changes in localization, environment will make same exception to become two different exceptions. Enable this option only if receive merged reports for different exceptions and you have no other option. We strongly recommend to use OnCustomBugID event to provide custom BugID instead of using this option.

 

 

7. "Location: Exact exception address" option will include RAW offset (in bytes) from beginning of exception module.

 

If you enable this option - then same exception from different compilations of your application will be considered as two different exceptions (unless recompilation will produce exactly the same executable).

 

This option can be used with either "Exception module version" or "Exception module compilation date/time" (or both) options enabled, as well as replacement for both of these options.

 

 

8. "Location: Approximate location" option will include unit name, class name, function name, but will not include address, offset or any line number information. This option allows to identify exception even if source code is changed.

 

If you enable this option - be sure to also enable identification by exception class and/or message.

 

 

9. "Location: Location" option will include unit name, class name, function name and offset in lines from first line of the function. This allows to identify exception line even if source code before exception function is changed, but it will not identify exception if function itself was changed.

 

 

10. "Location: Exact location" option will include full information: unit name, class name, function name, and line number. This will allow to identify exception after any possible recompilation, but not after source code changes.

 

 

11. "Call Stack: Only items with line numbers" option will include only call stack items with line numbers present. This usually means Delphi source code only (even from other modules). Items will be included as: unit, class, function, line offset (e.g. same as with "Location: Location" option).

 

You may use this option to ignore calls to system DLLs or even RTL/VCL code (if you have "Use Debug DCUs" option disabled).

 

Note: first item (exception address) is ignored. Use "Location" options above to include/exclude call stack's exception entry.

 

 

12. "Call Stack: Only items from exception module" option will include only call stack items from exception module. Items will be included as: unit, class, function, line offset (e.g. same as with "Location: Location" option).

 

You may use this option to include calls from RTL/VCL code if you have "Use Debug DCUs" option disabled, but ignore calls to system DLLs.

 

Note: first item (exception address) is ignored. Use "Location" options above to include/exclude call stack's exception entry.

 

 

13. "Call Stack: Full" option will include all call stack items from current thread. Items will be included as: unit, class, function, line offset (e.g. same as with "Location: Location" option).

 

This will usually lead to duplicating exceptions, because call stack will be different on different machines/environments/OS.

 

Note: first item (exception address) is ignored. Use "Location" options above to include/exclude call stack's exception entry.

 

 

14. "Allow EurekaLog to use user-defined "custom" low word" option instructs EurekaLog to use CRC-32 (4 bytes) instead of CRC-16 (2 bytes). Enabling this option will give you less possible collisions, but disable custom part of BugID.

 

Note: OnCustomBugID event will not be called if this option is turned on.

 

 

See also:




Send feedback... Build date: 2023-09-11
Last edited: 2023-03-07
PRIVACY STATEMENT
The documentation team uses the feedback submitted to improve the EurekaLog documentation. We do not use your e-mail address for any other purpose. We will remove your e-mail address from our system after the issue you are reporting has been resolved. While we are working to resolve this issue, we may send you an e-mail message to request more information about your feedback. After the issues have been addressed, we may send you an email message to let you know that your feedback has been addressed.


Permanent link to this article: https://www.eurekalog.com/help/eurekalog/bugid_page.php