mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-21 20:15:27 +00:00
Qt/Debugger: Call Stack panel
This commit is contained in:
parent
1113221340
commit
2eea18469d
8 changed files with 150 additions and 2 deletions
|
@ -363,6 +363,11 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_call_stack_list.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_cg_disasm_window.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
|
@ -598,6 +603,11 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_call_stack_list.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_cg_disasm_window.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
|
@ -853,6 +863,11 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_call_stack_list.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_cg_disasm_window.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
|
@ -1088,6 +1103,11 @@
|
|||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Release\moc_call_stack_list.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Release\moc_cg_disasm_window.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
|
@ -1301,6 +1321,7 @@
|
|||
<ClCompile Include="rpcs3qt\about_dialog.cpp" />
|
||||
<ClCompile Include="rpcs3qt\breakpoint_handler.cpp" />
|
||||
<ClCompile Include="rpcs3qt\breakpoint_list.cpp" />
|
||||
<ClCompile Include="rpcs3qt\call_stack_list.cpp" />
|
||||
<ClCompile Include="rpcs3qt\cheat_manager.cpp" />
|
||||
<ClCompile Include="rpcs3qt\curl_handle.cpp" />
|
||||
<ClCompile Include="rpcs3qt\custom_dialog.cpp" />
|
||||
|
@ -1787,6 +1808,24 @@
|
|||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\wolfssl" "-I.\..\3rdparty\curl\include" "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\XAudio2Redist\include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\call_stack_list.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB "-DBRANCH=$(BRANCH)" -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">Moc%27ing %(Identity)...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\custom_dialog.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">Moc%27ing %(Identity)...</Message>
|
||||
|
|
|
@ -646,6 +646,9 @@
|
|||
<ClCompile Include="rpcs3qt\breakpoint_list.cpp">
|
||||
<Filter>Gui\debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rpcs3qt\call_stack_list.cpp">
|
||||
<Filter>Gui\debugger</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_breakpoint_list.cpp">
|
||||
<Filter>Generated Files\Release - LLVM</Filter>
|
||||
</ClCompile>
|
||||
|
@ -658,6 +661,18 @@
|
|||
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_breakpoint_list.cpp">
|
||||
<Filter>Generated Files\Debug - LLVM</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_call_stack_list.cpp">
|
||||
<Filter>Generated Files\Release - LLVM</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_call_stack_list.cpp">
|
||||
<Filter>Generated Files\Debug</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Release\moc_call_stack_list.cpp">
|
||||
<Filter>Generated Files\Release</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_call_stack_list.cpp">
|
||||
<Filter>Generated Files\Debug - LLVM</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QTGeneratedFiles\qrc_windows.cpp">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClCompile>
|
||||
|
@ -1157,6 +1172,9 @@
|
|||
<CustomBuild Include="rpcs3qt\breakpoint_list.h">
|
||||
<Filter>Gui\debugger</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="rpcs3qt\call_stack_list.h">
|
||||
<Filter>Gui\debugger</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="windows.qrc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</CustomBuild>
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
auto_pause_settings_dialog.cpp
|
||||
breakpoint_handler.cpp
|
||||
breakpoint_list.cpp
|
||||
call_stack_list.cpp
|
||||
cg_disasm_window.cpp
|
||||
cheat_manager.cpp
|
||||
curl_handle.cpp
|
||||
|
|
37
rpcs3/rpcs3qt/call_stack_list.cpp
Normal file
37
rpcs3/rpcs3qt/call_stack_list.cpp
Normal file
|
@ -0,0 +1,37 @@
|
|||
#include "call_stack_list.h"
|
||||
|
||||
constexpr auto qstr = QString::fromStdString;
|
||||
|
||||
call_stack_list::call_stack_list(QWidget* parent) : QListWidget(parent)
|
||||
{
|
||||
setEditTriggers(QAbstractItemView::NoEditTriggers);
|
||||
setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||
|
||||
// connects
|
||||
connect(this, &QListWidget::itemDoubleClicked, this, &call_stack_list::OnCallStackListDoubleClicked);
|
||||
}
|
||||
|
||||
void call_stack_list::UpdateCPUData(std::weak_ptr<cpu_thread> cpu, std::shared_ptr<CPUDisAsm> disasm)
|
||||
{
|
||||
this->cpu = cpu;
|
||||
}
|
||||
|
||||
void call_stack_list::HandleUpdate(std::vector<u32> call_stack)
|
||||
{
|
||||
clear();
|
||||
|
||||
for (auto addr : call_stack)
|
||||
{
|
||||
const QString call_stack_item_text = qstr(fmt::format("0x%08llx", addr));
|
||||
QListWidgetItem* callStackItem = new QListWidgetItem(call_stack_item_text);
|
||||
callStackItem->setData(Qt::UserRole, { addr });
|
||||
addItem(callStackItem);
|
||||
}
|
||||
}
|
||||
|
||||
void call_stack_list::OnCallStackListDoubleClicked()
|
||||
{
|
||||
const u32 address = currentItem()->data(Qt::UserRole).value<u32>();
|
||||
Q_EMIT RequestShowAddress(address);
|
||||
}
|
26
rpcs3/rpcs3qt/call_stack_list.h
Normal file
26
rpcs3/rpcs3qt/call_stack_list.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
#pragma once
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "Emu/CPU/CPUThread.h"
|
||||
#include "Emu/CPU/CPUDisAsm.h"
|
||||
|
||||
#include <QListWidget>
|
||||
|
||||
class call_stack_list : public QListWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
call_stack_list(QWidget* parent);
|
||||
void UpdateCPUData(std::weak_ptr<cpu_thread> cpu, std::shared_ptr<CPUDisAsm> disasm);
|
||||
|
||||
Q_SIGNALS:
|
||||
void RequestShowAddress(u32 addr);
|
||||
public Q_SLOTS:
|
||||
void HandleUpdate(std::vector<u32> call_stack);
|
||||
private Q_SLOTS:
|
||||
void OnCallStackListDoubleClicked();
|
||||
private:
|
||||
std::weak_ptr<cpu_thread> cpu;
|
||||
};
|
|
@ -5,6 +5,7 @@
|
|||
#include "debugger_list.h"
|
||||
#include "breakpoint_list.h"
|
||||
#include "breakpoint_handler.h"
|
||||
#include "call_stack_list.h"
|
||||
#include "qt_utils.h"
|
||||
|
||||
#include "Emu/System.h"
|
||||
|
@ -48,10 +49,12 @@ debugger_frame::debugger_frame(std::shared_ptr<gui_settings> settings, QWidget *
|
|||
hbox_b_main->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
m_breakpoint_handler = new breakpoint_handler();
|
||||
m_breakpoint_list = new breakpoint_list(this, m_breakpoint_handler);
|
||||
|
||||
m_debugger_list = new debugger_list(this, settings, m_breakpoint_handler);
|
||||
m_debugger_list->installEventFilter(this);
|
||||
|
||||
m_breakpoint_list = new breakpoint_list(this, m_breakpoint_handler);
|
||||
m_call_stack_list = new call_stack_list(this);
|
||||
|
||||
m_choice_units = new QComboBox(this);
|
||||
m_choice_units->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||
|
@ -97,13 +100,20 @@ debugger_frame::debugger_frame(std::shared_ptr<gui_settings> settings, QWidget *
|
|||
m_debugger_list->setFont(m_mono);
|
||||
m_misc_state->setFont(m_mono);
|
||||
m_regs->setFont(m_mono);
|
||||
m_call_stack_list->setFont(m_mono);
|
||||
|
||||
m_right_splitter = new QSplitter(this);
|
||||
m_right_splitter->setOrientation(Qt::Vertical);
|
||||
m_right_splitter->addWidget(m_misc_state);
|
||||
m_right_splitter->addWidget(m_regs);
|
||||
m_right_splitter->addWidget(m_call_stack_list);
|
||||
m_right_splitter->addWidget(m_breakpoint_list);
|
||||
m_right_splitter->setStretchFactor(0, 1);
|
||||
|
||||
// Set relative sizes for widgets
|
||||
m_right_splitter->setStretchFactor(0, 2); // misc state
|
||||
m_right_splitter->setStretchFactor(1, 8); // registers
|
||||
m_right_splitter->setStretchFactor(2, 3); // call stack
|
||||
m_right_splitter->setStretchFactor(3, 1); // breakpoint list
|
||||
|
||||
m_splitter = new QSplitter(this);
|
||||
m_splitter->addWidget(m_debugger_list);
|
||||
|
@ -161,6 +171,9 @@ debugger_frame::debugger_frame(std::shared_ptr<gui_settings> settings, QWidget *
|
|||
connect(m_debugger_list, &debugger_list::BreakpointRequested, m_breakpoint_list, &breakpoint_list::HandleBreakpointRequest);
|
||||
connect(m_breakpoint_list, &breakpoint_list::RequestShowAddress, m_debugger_list, &debugger_list::ShowAddress);
|
||||
|
||||
connect(this, &debugger_frame::CallStackUpdateRequested, m_call_stack_list, &call_stack_list::HandleUpdate);
|
||||
connect(m_call_stack_list, &call_stack_list::RequestShowAddress, m_debugger_list, &debugger_list::ShowAddress);
|
||||
|
||||
m_debugger_list->ShowAddress(m_debugger_list->m_pc);
|
||||
UpdateUnitList();
|
||||
}
|
||||
|
@ -409,6 +422,7 @@ void debugger_frame::OnSelectUnit()
|
|||
|
||||
m_debugger_list->UpdateCPUData(this->cpu, m_disasm);
|
||||
m_breakpoint_list->UpdateCPUData(this->cpu, m_disasm);
|
||||
m_call_stack_list->UpdateCPUData(this->cpu, m_disasm);
|
||||
DoUpdate();
|
||||
UpdateUI();
|
||||
}
|
||||
|
@ -448,6 +462,8 @@ void debugger_frame::WritePanels()
|
|||
m_regs->clear();
|
||||
m_regs->setText(qstr(cpu->dump_regs()));
|
||||
m_regs->verticalScrollBar()->setValue(loc);
|
||||
|
||||
Q_EMIT CallStackUpdateRequested(cpu->dump_callstack_list());
|
||||
}
|
||||
|
||||
void debugger_frame::ShowGotoAddressDialog()
|
||||
|
@ -560,6 +576,11 @@ void debugger_frame::ClearBreakpoints()
|
|||
m_breakpoint_list->ClearBreakpoints();
|
||||
}
|
||||
|
||||
void debugger_frame::ClearCallStack()
|
||||
{
|
||||
Q_EMIT CallStackUpdateRequested({});
|
||||
}
|
||||
|
||||
void debugger_frame::ShowPC()
|
||||
{
|
||||
m_debugger_list->ShowAddress(GetPc());
|
||||
|
|
|
@ -15,6 +15,7 @@ class gui_settings;
|
|||
class debugger_list;
|
||||
class breakpoint_list;
|
||||
class breakpoint_handler;
|
||||
class call_stack_list;
|
||||
|
||||
class debugger_frame : public custom_dock_widget
|
||||
{
|
||||
|
@ -53,6 +54,8 @@ class debugger_frame : public custom_dock_widget
|
|||
breakpoint_list* m_breakpoint_list;
|
||||
breakpoint_handler* m_breakpoint_handler;
|
||||
|
||||
call_stack_list* m_call_stack_list;
|
||||
|
||||
std::shared_ptr<gui_settings> xgui_settings;
|
||||
|
||||
public:
|
||||
|
@ -71,6 +74,7 @@ public:
|
|||
void ShowGotoAddressDialog();
|
||||
u64 EvaluateExpression(const QString& expression);
|
||||
void ClearBreakpoints(); // Fallthrough method into breakpoint_list.
|
||||
void ClearCallStack();
|
||||
|
||||
/** Needed so key press events work when other objects are selected in debugger_frame. */
|
||||
bool eventFilter(QObject* object, QEvent* event) override;
|
||||
|
@ -83,6 +87,7 @@ protected:
|
|||
|
||||
Q_SIGNALS:
|
||||
void DebugFrameClosed();
|
||||
void CallStackUpdateRequested(std::vector<u32> call_stack);
|
||||
|
||||
public Q_SLOTS:
|
||||
void DoStep(bool stepOver = false);
|
||||
|
|
|
@ -991,6 +991,7 @@ void main_window::OnEmuStop()
|
|||
|
||||
m_debugger_frame->EnableButtons(false);
|
||||
m_debugger_frame->ClearBreakpoints();
|
||||
m_debugger_frame->ClearCallStack();
|
||||
|
||||
ui->sysPauseAct->setText(Emu.IsReady() ? tr("&Play\tCtrl+E") : tr("&Resume\tCtrl+E"));
|
||||
ui->sysPauseAct->setIcon(m_icon_play);
|
||||
|
|
Loading…
Add table
Reference in a new issue