BugID is a 4-byte unsigned integer (LongWord) which is used to identify exception, for example: 76BA0000. Two exception with the same BugID value are considered to be the same. Two bug reports are considered to be duplicates of each other if they are bug reports about exceptions with the same BugID. BugID is used to establish uniqueness for many EurekaLog features, for example:
BugID consists of two parts. Hi-word is defined by EurekaLog. Low-word is not used by EurekaLog and it's left for your customizations. For example, if BugID is 76BA0000, then hi-word (defined by EurekaLog) is $76BA, low-word (defined by you) is $0000.
Hi-word of BugID is a CRC16 value of string ("BugID ident") which includes:
"BugID ident" does not include exception message and exact error location (address). Only human-readable names are taken from call stack (unit name, class name and routine name). Thus, BugID will not change when you rebuild your application.
You can alter BugID (either by appending custom lo-word or fully replace it) in OnCustomBugID event handler.
Important note: do not confuse context ID and BugID. These are two completely different things! BugID is an exception identifier, which is different for each exception (and depends even on code which has raised the exception). BugID is used to identify duplicate (e.g. the same) exception. Each and every exception has BugID assigned. Context ID is an optional ID not linked with BugID. Assigning context ID to exception will turn exception into expected exception.