Root > Solving bugs in your code > Bug reports > Call Stack section > Call stacks

Call stacks

Previous pageReturn to chapter overviewNext page   

This article is a part of working with bug reports.

 

Call stack is a central piece of information in any bug report. Call stack is a sequence of addresses (mostly with textual description), which leads us to place of the problem (exception or memory problem).

 

Here are examples of call stacks in different forms:

 

 

Delphi’s call stack (View/Debug Windows/Call Stack)

 

Call Stack Information:      

------------------------------------------------------------------------       

|Address |Module      |Unit        |Class |Procedure/Method      |Line |       

------------------------------------------------------------------------       

|*Exception Thread: ID=8820; Priority=0; Class=; [Main]                |       

|----------------------------------------------------------------------|       

|004D316F|Project8.exe|Unit9.pas   |TForm9|Button1Click          |33[3]|       

|76BCF6A5|user32.dll  |            |      |GetWindowLongW        |     |       

|76BCF6B1|user32.dll  |            |      |GetWindowLongW        |     |       

|76BC8ABF|user32.dll  |            |      |NotifyWinEvent        |     |       

|76BCF6A5|user32.dll  |            |      |GetWindowLongW        |     |       

|76BCF6B1|user32.dll  |            |      |GetWindowLongW        |     |       

|77AA8502|ntdll.dll   |            |      |NtFindAtom            |     |       

|76BF7B8D|user32.dll  |            |      |GetRawInputDeviceInfoW|     |      

|76BD078F|user32.dll  |            |      |GetPropW              |     |       

|76BD0AF5|user32.dll  |            |      |SendMessageW          |     |       

|76BB8C6B|user32.dll  |            |      |CallNextHookEx        |     |       

|76BD0697|user32.dll  |            |      |CallWindowProcW       |     |       

|76BD0681|user32.dll  |            |      |CallWindowProcW       |     |       

|76BB8C6B|user32.dll  |            |      |CallNextHookEx        |     |       

|76BD078F|user32.dll  |            |      |GetPropW              |     |       

|76BBE001|user32.dll  |            |      |GetCapture            |     |       

|76BD005B|user32.dll  |            |      |DispatchMessageW      |     |       

|76BD0051|user32.dll  |            |      |DispatchMessageW      |     |       

|004D499D|Project8.exe|Project8.dpr|      |                      |17[4]|       

------------------------------------------------------------------------

 

EurekaLog’s call stack (raw text)

 

 

EurekaLog’s call stack (EurekaLog Viewer)

 

4CC5B7 [Unit15.pas][Unit15][Unit15.B][35]      

4CC5C4 [Unit15.pas][Unit15][Unit15.A][39]       

4CC5DC [Unit15.pas][Unit15][Unit15.TForm15.FormCreate][43]       

4C0CCB [Forms][Forms.TCustomForm.DoCreate]       

4C0913 [Forms][Forms.TCustomForm.AfterConstruction]       

4C08E8 [Forms][Forms.TCustomForm.Create]       

4CA539 [Forms][Forms.TApplication.CreateForm]       

4CD986 [Project14][Project14.Project14][14]       

75B94911 [BaseThreadInitThunk]       

770FE4B6

 

FastMM’s call stack

 

(00087A8C){Project1.exe} [00488A8C] Unit1.B (Line 40, "Unit1.pas" + 1) + $5      

(00087ABC){Project1.exe} [00488ABC] Unit1.A (Line 44, "Unit1.pas" + 0) + $0       

(00055523){Project1.exe} [00456523] Controls.TWinControl.WndProc + $513       

(0003AA8C){Project1.exe} [0043BA8C] StdCtrls.TButtonControl.WndProc + $6C       

(00055673){Project1.exe} [00456673] Controls.DoControlMsg + $23       

(00055523){Project1.exe} [00456523] Controls.TWinControl.WndProc + $513       

(00068584){Project1.exe} [00469584] Forms.TCustomForm.WndProc + $594       

(00054C3C){Project1.exe} [00455C3C] Controls.TWinControl.MainWndProc + $2C       

(00025724){Project1.exe} [00426724] Classes.StdWndProc + $14       

(0005561F){Project1.exe} [0045661F] Controls.TWinControl.DefaultHandler + $D7       

(00055523){Project1.exe} [00456523] Controls.TWinControl.WndProc + $513       

(0003AA8C){Project1.exe} [0043BA8C] StdCtrls.TButtonControl.WndProc + $6C       

(00025724){Project1.exe} [00426724] Classes.StdWndProc + $14

 

JCL’s call stack

 

main thread ($7c): 

3ecf8ea9 +0000 mshtml.dll 

7c90e470 +0010 ntdll.dll KiUserCallbackDispatcher 

7e42b1a6 +000a USER32.dll DestroyWindow 

0086ad33 +001f Project1.exe OleCtrls 640 +11 TOleControl.Destroy 

008715c9 +00a1 Project1.exe DHTMLEdit 5225 +16 TCustomDHTMLEdit.Destroy 

00533c11 +008d Project1.exe Controls 7737 +16 TWinControl.Destroy 

004ee915 +0039 Project1.exe ComCtrls 5666 +6 TTabSheet.Destroy 

00533c11 +008d Project1.exe Controls 7737 +16 TWinControl.Destroy 

004edb52 +005e Project1.exe ComCtrls 5144 +5 TCustomTabControl.Destroy 

004eef15 +0049 Project1.exe ComCtrls 5889 +3 TPageControl.Destroy 

00533c11 +008d Project1.exe Controls 7737 +16 TWinControl.Destroy 

00510770 +0028 Project1.exe Forms 2644 +3 TScrollingWinControl.Destroy 

005116a9 +00f9 Project1.exe Forms 3246 +33 TCustomForm.Destroy 

7c90e485 +0009 ntdll.dll KiUserExceptionDispatcher 

7ca2b137 +00b4 SHELL32.dll SHGetFileInfoW 

 

madExcept's call stack

 

So, as you can see: call stack always contains very similar information, which don’t depend on tool created it (well, there are all different applications in the above examples, so don’t try to compare them).

 

Now it's time to learn how to read call stacks.

 

 

See also:




Send feedback... Build date: 2024-09-30
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/call_stacks.php