PDA

View Full Version : Include more information into EL's debug info



Yams
10-Sep-2008, 08:41 AM
Hello, Fabio.

Here goes my part two for: http://news.eurekalog.com/showthread.php?t=2041
Part one is here: http://news.eurekalog.com/showthread.php?t=2106

For demo, please see my part one. The interesting part is output of demo application. Let see it here ("Use debug DCUs" is off, "Do not store the Class/Procedure names" is off):


004C3C62: TForm11.Button1Click 49 [004C3C62]{Project12.exe} Unit11.TForm11.Button1Click (Line 49, "Unit11.pas")
004C41E5: TForm11.FormCreate 86 [004C41E5]{Project12.exe} Unit11.TForm11.FormCreate (Line 86, "Unit11.pas")
004A7836: . 0 [004A7836]{Project12.exe} Forms.TCustomForm.DoCreate
004A748E: . 0 [004A748E]{Project12.exe} Forms.TCustomForm.AfterConstruction
004A7464: . 0 [004A7464]{Project12.exe} Forms.TCustomForm.Create

The left column is information retrieved by GetSourceInfoByAddr (i.e. it is EL's debug info).
The right column is information retrieved by GetLocationInfoStr (i.e. it is JCL's debug info).

As you can see, the EL's debug information misses some important information.
Please note, that additional information has nothing to do with JCL itself. If I enable map file for project ("Detailed" option) and turn off JCL debug info - the output will be the same.
In other words: all nessesary information exists. It can be found (for example) in map file:



Address Publics by Name

0004:0000888C ActnList..9
0001:000A1748 ActnList..TActionLink
0001:000A1320 ActnList..TContainedAction
...
0001:000AA0AC Forms.TCustomForm.ActiveChanged
0001:000A647C Forms.TCustomForm.AfterConstruction <<--
0001:000A7E6C Forms.TCustomForm.AlignControls
...
0001:000ABB8C Forms.TCustomForm.CMUIActivate
0001:000A62F0 Forms.TCustomForm.Create <<--
0001:000A64B4 Forms.TCustomForm.CreateNew
...
0001:000A722C Forms.TCustomForm.DoClose
0001:000A6804 Forms.TCustomForm.DoCreate <<--
0001:000A6880 Forms.TCustomForm.DoDestroy
...


But for some reason this information is not included into EL's debug information.

Of couse, there are no line numbers for Forms unit. But the names of methods are present. Please, add this information into EL.

P.S.
I suspect function TBaseModule.BuildMapFile as the source of such behaviour, but I didn't dig this issue. At first glance TBaseModule.BuildMapFile gather all required information (ProcedureList) but do not write it anywhere if unit does not contain line numbers information.

P.P.S.
Also note that even with MAP and JDBG info available - EL does not try to extract information from these sources when it is unable to find information in EL' debug info.

Alex
27-Nov-2013, 08:50 PM
Hi,

This feature is implemented in EurekaLog 7. Partial debug information is included now.