77fe1545c99a2c2ae6b9f819ec0ff97ee1ab3f08
[clinton/Virtual-Jaguar-Rx.git] / src / debugger / callstackbrowser.cpp
1 //
2 // callstackbrowser.cpp - Call Stack
3 //
4 // by Jean-Paul Mari
5 //
6 // JPM = Jean-Paul Mari <djipi.mari@gmail.com>
7 //
8 // Who When What
9 // --- ---------- -----------------------------------------------------------
10 // JPM 08/31/2018 Created this file
11 //
12
13 // STILL TO DO:
14 // Better display presentation
15 // To display call function
16 // To use DWARF frame information
17 //
18
19 #include "debugger/callstackbrowser.h"
20 #include "memory.h"
21 #include "debugger/DBGManager.h"
22 #include "m68000/m68kinterface.h"
23
24
25 //
26 CallStackBrowserWindow::CallStackBrowserWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog),
27 layout(new QVBoxLayout), text(new QTextBrowser)
28 {
29 setWindowTitle(tr("Call Stack"));
30
31 QFont fixedFont("Lucida Console", 8, QFont::Normal);
32 fixedFont.setStyleHint(QFont::TypeWriter);
33 text->setFont(fixedFont);
34 setLayout(layout);
35
36 layout->addWidget(text);
37 }
38
39
40 //
41 CallStackBrowserWindow::~CallStackBrowserWindow(void)
42 {
43 }
44
45
46 //
47 void CallStackBrowserWindow::RefreshContents(void)
48 {
49 unsigned int a6, Sa6, ret;
50 char *FuncName;
51 QString CallStack;
52 char string[1024];
53
54 if (isVisible())
55 {
56 if ((a6 = m68k_get_reg(NULL, M68K_REG_A6)) && DBGManager_GetType())
57 {
58 while ((Sa6 = a6))
59 {
60 a6 = GET32(jaguarMainRAM, Sa6);
61 ret = GET32(jaguarMainRAM, Sa6 + 4);
62
63 sprintf(string, "0x%06X | Ret: 0x%06X | From: %s - 0x%06X", Sa6, ret, (FuncName = DBGManager_GetFunctionName(ret)), (unsigned int)DBGManager_GetAdrFromSymbolName(FuncName));
64 CallStack += QString(string);
65 if (a6)
66 {
67 sprintf(string, "<br>");
68 CallStack += QString(string);
69 }
70 }
71
72 text->clear();
73 text->setText(CallStack);
74 }
75 else
76 {
77 text->clear();
78 }
79 }
80 }
81
82
83 //
84 void CallStackBrowserWindow::keyPressEvent(QKeyEvent * e)
85 {
86 if (e->key() == Qt::Key_Escape)
87 {
88 hide();
89 }
90 }
91
92