EurekaLog supports source code with include files and generics.
Include FilesSuppose you have such code:
Unit1.pas: procedure TForm1.Button1Click(Sender: TObject);
code.inc: // some code
EurekaLog will show such information for this exception:
Nested code generates two lines in call stack
Call Stack Information: ---------------------------------------------------------------------------------- |Methods |Stack |Address |Source |Unit |Class |Procedure/Method|Line | ---------------------------------------------------------------------------------- |7FFFFFFE|00000000|0053220F|code.inc |Unit1 |TForm1 |Button1Click |2[1] | |7FFFFFFE|00000000|0053220F|Unit1.pas |Unit1 |TForm1 |Button1Click |55[1]| |00000060|0019F100|004FC632|Controls.pas|Controls|TControl|Click | | |00000020|0019F108|004F6668|StdCtrls.pas|StdCtrls|TButton |Click | | .....
As you can see: EurekaLog will indicate that exception was raised on line #2 of code.inc, and that this .inc file was used in line #55 of Unit1.pas. In other words, each location inside include file will produce two entries in call stack for the same address.
Note: it is not always possible to determine exact source line in the master .pas file. The results can also vary depending on content of your .inc file, if it ends with line break or not, what linker version is used.
GenericsSuppose you have such code:
unit Unit3;
unit Unit2;
EurekaLog will show such information for this exception:
Generics in call stack
Call Stack Information: ------------------------------------------------------------------------------------------------------------------- |Methods |Stack |Address |Source |Unit |Class |Procedure/Method|Line | ------------------------------------------------------------------------------------------------------------------- |7FFFFFFE|00000000|0071A93D|Unit3.pas |Unit2 |{Unit3}TMyClass<System.Integer>|DoSomething |19[1] | |00000060|0019F348|0071A826|Unit2.pas |Unit2 |TForm2 |Button1Click |31[1] | |00000060|0019F358|00648FE7|Vcl.Controls.pas|Vcl.Controls|TControl |Click |7442[9]| |00000020|0019F364|00660896|Vcl.StdCtrls.pas|Vcl.StdCtrls|TCustomButton |Click |5441[3]| .....
As you can see: EurekaLog will show a source code of generic class, as well as used type (Integer instead of T).
See also:
|