summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
AgeCommit message (Collapse)Author
2025-11-04Debugger: Ignore bctr when stepping outVampireFlower
2025-07-27PPCSymbolDB: Don't return non-const pointersJosJuice
For thread safety, we shouldn't return any pointers or references that can be used to mutate the state of the PPCSymbolDB. This should be the final part of making PPCSymbolDB thread safe unless I've missed something.
2025-07-15CodeWidget: Add button that prevents automatic updates to the address, such ↵TryTwo
as navigating to the PC on pause.
2025-06-22Merge pull request #13765 from TryTwo/CodeWidget_clear_unusedJMC47
CodeWidget: Clear calls/callers if no symbol exists.
2025-06-22Merge pull request #13691 from TryTwo/PR_NotesJMC47
Debugger Add note-type symbols .
2025-06-20CodeWidget: Clear calls and callers box if there is no symbol, otherwise ↵TryTwo
outdated data will persist.
2025-06-19Debugger CodeWidget : Add search box for notes.TryTwo
2025-06-14Source: Remove redundant lambda parameter listsDr. Dystopia
2025-06-07DolphinQt: Replace widespread SetQWidgetWindowDecorations calls with an ↵Jordan Woyak
event filter.
2025-05-17Merge pull request #13190 from tygyh/Move-to-inner-scope-DolphinQTJordan Woyak
DolphinQT: Move variables to inner scope
2025-03-29[Debugger] CTRL+G support in code and memory viewNitch2024
2025-03-26Move variables to inner scopetygyh
2025-03-21CodeWidget: Layout tweak. Give left-side widgets more vertical space by ↵TryTwo
moving the address bar out of the way. Align things better.
2024-11-11Core: Store object name separately for symbolsAmber Brault
2024-10-19DolphinQt: JIT Widget Refreshmitaclaw
Fulfilling a certain six-year-old todo.
2024-09-20DolphinQt: A Ubiquitous Signal For When Breakpoints Changemitaclaw
There were three distinct mechanisms for signaling breakpoint changes in DolphinQt, and the wiring had room for improvement. The behavior of these signals has been consolidated into the new `Host::PPCBreakpointsChanged` signal, which can be emitted from anywhere in DolphinQt to properly update breakpoints everywhere in DolphinQt. This improves a few things: - For the `CodeViewWidget` and `MemoryViewWidget`, signals no longer need to propagate through the `CodeWidget` and `MemoryWidget` (respectively) to reach their destination (incoming or outgoing). - For the `BreakpointWidget`, by self-triggering from its own signal, it no longer must manually call `Update()` after all of the emission sites. - For the `BranchWatchDialog`, it now has one less thing it must go through the `CodeWidget` for, which is a plus.
2024-08-31BranchWatchDialog: Listen For `clicked` Signal Rather Than `pressed`mitaclaw
The latter signal was used by mistake, see PR #8263.
2024-07-05Debugger: Rework temporary breakpointsMartino Fontana
Before: 1. In theory there could be multiple, but in practice they were (manually) cleared before creating one 2. (Some of) the conditions to clear one were either to reach it, to create a new one (due to the point above), or to step. This created weird behavior: let's say you Step Over a `bl` (thus creating a temporary breakpoint on `pc+4`), and you reached a regular breakpoint inside the `bl`. The temporary one would still be there: if you resumed, the emulation would still stop there, as a sort of Step Out. But, if before resuming, you made a Step, then it wouldn't do that. 3. The breakpoint widget had no idea concept of them, and will treat them as regular breakpoints. Also, they'll be shown only when the widget is updated in some other way, leading to more confusion. 4. Because only one breakpoint could exist per address, the creation of a temporary breakpoint on a top of a regular one would delete it and inherit its properties (e.g. being log-only). This could happen, for instance, if you Stepped Over a `bl` specifically, and pc+4 had a regular breakpoint. Now there can only be one temporary breakpoint, which is automatically cleared whenever emulation is paused. So, removing some manual clearing from 1., and removing the weird behavior of 2. As it is stored in a separate variable, it won't be seen at all depending on the function used (fixing 3., and removing some checks in other places), and it won't replace a regular breakpoint, instead simply having priority (fixing 4.).
2024-07-02Debugger: Small other cleanupMartino Fontana
Change misleading names. Fix function usage: Intepreter and Step Out will not check breakpoints in their own wrong way anymore (e.g. breaking on log-only breakpoints).
2024-05-25BranchWatchDialog: Resolve Linux FIXMEmitaclaw
This stopped being an issue for me with a recent package update, so I guess Qt6 was fixed upstream?
2024-04-08Core::GetState: Avoid Global System Accessormitaclaw
2024-03-28DolphinQt: A Ubiquitous Signal For When Symbols Changemitaclaw
There were three distinct mechanisms for signaling symbol changes in DolphinQt: `Host::NotifyMapLoaded`, `MenuBar::NotifySymbolsUpdated`, and `CodeViewWidget::SymbolsChanged`. The behavior of these signals has been consolidated into the new `Host::PPCSymbolsUpdated` signal, which can be emitted from anywhere in DolphinQt to properly update symbols everywhere in DolphinQt.
2024-03-13PPCSymbolDB: Move instance to PowerPCManagermitaclaw
2024-03-07BranchWatchDialog: Fix Misc. Erratamitaclaw
Window icon was missing from QDialog lacking a parent. Giving the QDialog a parent revealed I had failed to make it properly non-modal, necessitating further changes. Settings save less often, now only upon destruction. Construction of BranchWatchDialog is now deferred.
2024-03-02Merge pull request #12359 from mitaclaw/code-diff-dialog-refreshAdmiral H. Curtiss
BranchWatchDialog: A Total Replacement for CodeDiffDialog
2024-02-27CodeWidget: Simplify Case-Insensitive Containsmitaclaw
2024-02-27BranchWatchDialog: A Total Replacement for CodeDiffDialogmitaclaw
With a purpose-built Branch Watch feature built into the emulated system: BranchWatchDialog, replacing CodeDiffDialog, is now better than ever!
2023-12-18Core/Debugger_SymbolMap: Remove redundant system parameters from interfaceLioncache
The CPU thread guard already allows access to the system instance. We can remove the system parameter to reduce rendundancy here.
2023-08-12DolphinQt: Set window decorations for all top-level QWidgets.Admiral H. Curtiss
2023-04-25DolphinQt: reset stylesheets on colorSchemeChangedShawn Hoffman
This is required for switching system color scheme (dark/light) dynamically at runtime.
2023-04-09PowerPC: Refactor to class, move to System.Admiral H. Curtiss
2023-04-05DolphinQt: Avoid ppcState global.Admiral H. Curtiss
2023-03-28PowerPC/MMU: Refactor to class, move to System.Admiral H. Curtiss
2023-03-08Core: Add System parameter to CPUThreadGuard.Admiral H. Curtiss
2023-03-08HW/CPU: Refactor to class, move to System.Admiral H. Curtiss
2023-02-12DolphinQt: Only update call stack if pausedJosJuice
This avoids a pseudo infinite loop where CodeWidget::UpdateCallstack would lock the CPU in order to read the call stack, causing the CPU to call Host_UpdateDisasmDialog because it's transitioning from running to pausing, causing Host::UpdateDisasmDialog to be emitted, causing CodeWidget::Update to be called, once again causing CodeWidget::UpdateCallstack to be called, repeating the cycle. Dolphin didn't go completely unresponsive during this, because Host_UpdateDisasmDialog schedules the emitting of Host::UpdateDisasmDialog to happen on another thread without blocking, but it was stopping certain operations like exiting emulation from working.
2023-02-12DolphinQt: Properly lock CPU before accessing emulated memoryJosJuice
This fixes a problem I was having where using frame advance with the debugger open would frequently cause panic alerts about invalid addresses due to the CPU thread changing MSR.DR while the host thread was trying to access memory. To aid in tracking down all the places where we weren't properly locking the CPU, I've created a new type (in Core.h) that you have to pass as a reference or pointer to functions that require running as the CPU thread.
2023-02-09CodeWidget: Fix shadowing warningPokechu22
2023-01-27Debugger: Avoid ppcState global.Admiral H. Curtiss
2023-01-27PowerPC: Parametrize CTR macro.Admiral H. Curtiss
2023-01-27PowerPC: Remove PC macro.Admiral H. Curtiss
2022-12-01Fix code widget not becoming visible when selecting 'view code' or similarPokechu22
This affected the memory and registers widgets (and possibly others). I'm pretty sure it regressed in 5f629abd8b89971872b0c2c2cdc8ea0035e8998d. The SetCodeVisible line is a new fix, but the equivalent already existed in the memory widget.
2022-10-12Remove most uses of StringFromFormat in favor of fmtPokechu22
2022-09-28Debugger/CodeWidget: Update callstack/callers/calls on symbol changesPokechu22
Before, only the symbols box would update. However, if you edit the symbol of a function in the call stack (which seems like something that would happen reasonably often while debugging), the call stack would be out of date until it was updated by clicking on it. Callers and calls were more of an edge case; for them to be out of date, you would need to right-click on an instruction in a function other than the one containing the currently-selected instruction (though it would also affect recursive functions).
2022-07-05Debugger CodeWidget: Add filter boxes to callstack, function calls, and ↵TryTwo
function callers. Move symbols search box to align with changes.
2022-03-26implement CodeDiffTool Featuredreamsyntax
Add Diff button to CodeWidget Add Code Diff Tool window for recording and differencing functions. Allows finding specific functions based on when they run.
2021-07-05treewide: convert GPLv2+ license info to SPDX tagsPierre Bourdon
SPDX standardizes how source code conveys its copyright and licensing information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX tags are adopted in many large projects, including things like the Linux kernel.
2021-02-14CodeViewWidget: Add WithDetailedUpdate to update CodeWidgetSepalani
This used to also update the function calls and callers.
2020-09-12DolphinQt: fix other widgets that use lambdas (capturing this) without ↵iwubcode
setting the receiver
2020-03-20Qt/CodeWidget: Typo in settings key.Admiral H. Curtiss