Commit Graph

254 Commits

Author SHA1 Message Date
aldelaro5 72f1d99634 Implement the configuration of how a breakpoint is added in the memory window
There might be a better way to highlight the options when adding the memory check, but for now, this works and the breakpoint list reports the right settings anyway.
2016-09-11 11:29:20 -04:00
aldelaro5 09df343247 Move Memchecks support out of debug only builds
It wouldn't impact performance until at least one memcheck is enabled.  Because of this, it can be used in release builds without much impact, the only thing that woudl change is the use of HasAny method instead of preprocessor conditionals.  Since the perforamnce decrease comes right when the first memcheck is added and restored when the last is removed, it basically is all beneficial and works the same way.
2016-09-09 15:05:54 -04:00
Markus Wick 6e488e65e3 Merge pull request #4013 from leoetlino/wx-assert-fix
Drop Dolphin patch to wxWidgets (and fix issues)
2016-09-09 17:27:07 +02:00
Mat M 1eacb8fd59 Merge pull request #4115 from aldelaro5/memorycheck-memorywindow-update-fix
Fix the breakpoint list not updating after adding a memory check via the memory view
2016-09-09 02:41:06 -04:00
Anthony 145ebd34e2 Merge pull request #4126 from aldelaro5/debugger-pause-button-fix
Fix the pause/play toolbar button not updating when reaching a breakp…
2016-09-08 20:10:19 -05:00
aldelaro5 ea2effcc7d Add formatting options for viewing registers
All formatting are individual per registers and they all have one option to go back to their original hexadecimal form.

- GPR: signed integer, unsigned integer, float
- FPR: double

Also happened to come accross an issue where editing the PFR would ignore the higher 32 bits of the new value, this had to be fixed for the format to work.
2016-09-08 10:50:04 -04:00
Léo Lam e8cb4119b8 Drop Dolphin-specific patch to wxWindows
This removes a Dolphin-specific patch to the wxWidgets3 code
for the following reasons:

* Calling wxWindowGTK::DoSetSize on a top-level window can end up
  calling wxTopLevelWindowGTK::DoMoveWindow, which triggers an assert
  because it is not supposed to be called for a top-level wxWindow.

* We should not be patching the wxWidgets code because that means the
  toolbars will still be broken if someone builds without using the
  WX that is in our Externals.

Instead, we now use a derived class for wxAuiToolBar and override
DoSetSize() to remove the problematic behaviour to get the same effect
(fixing toolbars) but without changing Externals code and without
causing asserts and other issues.
2016-09-07 15:15:09 +02:00
aldelaro5 6f54c3207c Fix registerView updates issues when stepping over or stepping out
For step over, it was updating twice which actually made the red display on the register view (when a register changes since) malfunction.  Since it doesn't seem to be usefull to update before AND after the run, the one before the run was removed.

For step out, well, because there was no chances given for the thread to run as it is single stepping all the time, I only added a call to update after it was done.
2016-09-05 23:45:24 -04:00
aldelaro5 cd515911c0 Fix the user font not appearing on the captions of panes
Both those in the code window and the ones that appears when the user select edit perpective.  The one that isn't fixed by this is in edit perspective mode, when the user drags a panel out and it becomes a floating window.
2016-08-27 21:29:03 -04:00
aldelaro5 7ad1f340df Fix the pause/play toolbar button not updating when reaching a breakpoint or a memory check 2016-08-15 14:08:19 -04:00
aldelaro5 5358e898c6 Fix the breakpoint list not updating after adding a memory check via the memory view.
Add the CCodeWindow to the constructor of the memoryWindow so it can call the notify update of the breakpoint list.

Add the case of breakpoint update when receiving an event (the update command was issued, but wasn't managed before).

Run clang format and renamed the code window names.
2016-08-11 15:38:17 -04:00
Mat M fac7d09091 Merge pull request #3737 from EmptyChaos/update-wx
Externals: Update wxWidgets to 3.1.0
2016-07-15 09:48:14 -04:00
Pringo 94353978ae Finish Menu Capitalization Fixes 2016-07-13 21:05:59 -07:00
EmptyChaos 822326eea9 Update wxWidgets to 3.1.0
From wxWidgets master 81570ae070b35c9d52de47b1f14897f3ff1a66c7.

include/wx/defs.h -- __w64 warning disable patch by comex brought forward.

include/wx/msw/window.h -- added GetContentScaleFactor() which was not implemented on Windows but is necessary for wxBitmap scaling on Mac OS X so it needs to work to avoid #ifdef-ing the code.

src/gtk/window.cpp -- Modified DoSetClientSize() to direct call wxWindowGTK::DoSetSize() instead of using public wxWindowBase::SetSize() which now prevents derived classes (like wxAuiToolbar) intercepting the call and breaking it. This matches Windows which does NOT need to call DoSetSize internally. End result is this fixes Dolphin's debug tools toolbars on Linux.

src/osx/window_osx.cpp -- Same fix as for GTK since it has the same issue.

src/msw/radiobox.cpp -- Hacked to fix display in HiDPI (was clipping off end of text).

Updated CMakeLists for Linux and Mac OS X. Small code changes to Dolphin to fix debug error boxes, deprecation warnings, and retain previous UI behavior on Windows.
2016-06-26 15:25:29 +10:00
Pringo 96d574b7ab Fixed Missed Uncapitalized Words. 2016-06-25 21:50:56 -07:00
Pringo 56d0f08f29 Change "Op" to "Instruction" 2016-06-25 19:12:32 -07:00
Pringo 6b568b1150 Fix Menu Capitalization 2016-06-25 10:50:04 -07:00
Pierre Bourdon 5fcb4bb3ab Further fixes to the formatting change. WX sucks. 2016-06-24 12:16:10 +02:00
Pierre Bourdon 3570c7f03a Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
EmptyChaos c1922783f8 Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer)
Fix Frame Advance and FifoPlayer pause/unpause/stop.

CPU::EnableStepping is not atomic but is called from multiple threads
which races and leaves the system in a random state; also instruction
stepping was unstable, m_StepEvent had an almost random value because
of the dual purpose it served which could cause races where CPU::Run
would SingleStep when it was supposed to be sleeping.

FifoPlayer never FinishStateMove()d which was causing it to deadlock.
Rather than partially reimplementing CPU::Run, just use CPUCoreBase
and then call CPU::Run(). More DRY and less likely to have weird bugs
specific to the player (i.e the previous freezing on pause/stop).

Refactor PowerPC::state into CPU since it manages the state of the
CPU Thread which is controlled by CPU, not PowerPC. This simplifies
the architecture somewhat and eliminates races that can be caused by
calling PowerPC state functions directly instead of using CPU's
(because they bypassed the EnableStepping lock).
2016-05-13 09:23:44 +10:00
Ryan Houdek 6754326c6b Fix debugger address lookup search control.
The dumb wxAUI stuff isn't fully implemented for GTK. So the wxAuiToolBar doesn't properly deduce the size it needs to be when it contains a
wxSearchCtrl object.
Force the manager to set its minimum size to something reasonable.
2016-01-16 08:05:24 -06:00
JosJuice 81466d7fa3 DolphinWX: Stop using XPM images
Using the XPM format for images has become a maintenance problem because
people don't know how to create them. This commit removes all XPM images
and all C files that contain PNG images. DolphinWX now uses the PNGs
in the Resources folder instead, just like DolphinQt and DolphinQt2 do.
2016-01-05 19:11:58 +01:00
Sepalani a6967358b2 RegisterView: View code menu added 2015-12-28 22:41:24 +04:00
Markus Wick cec1a75976 Merge pull request #3296 from sepalani/r_menu
DebuggerViews: Fixed nullptr dereferences
2015-12-28 10:02:53 +01:00
Sepalani 4d3f05ddf8 DebuggerViews: Fixed nullptr dereferences 2015-12-27 19:57:58 +04:00
JosJuice 74ea765427 Mark more strings for translation 2015-11-20 11:33:47 +01:00
Tillmann Karras 81d9cce70c VideoCommon: rename TextureCache to TextureCacheBase 2015-11-06 15:43:58 +01:00
Sepalani 6b662280a9 MemoryCheckDlg: Fix event buttons 2015-10-23 20:37:29 +02:00
flacs f3c88137e7 Merge pull request #2798 from lioncash/search
Debugger: Use wxSearchCtrls instead of wxTextCtrl for address searching.
2015-10-11 15:29:59 +02:00
Lioncash ef1cc2cec4 CPU: Convert CCPU into a namespace
There's not much point to a class with only static member functions.
2015-10-04 15:15:10 -04:00
Lioncash 457a398c33 MemoryWindow: Adjust control alignment
Aligns controls so that their widths remain the same with one another
2015-09-26 22:46:57 -04:00
Lioncash 5aa19ad051 MemoryWindow: Change the address search wxTextCtrl into a wxSearchCtrl 2015-09-26 22:46:53 -04:00
Lioncash 7ba171a497 CodeWindow: Ignore search error highlighting on empty string
Doesn't make sense to flag these as errors, since someone might search for another address.
2015-09-26 22:38:08 -04:00
Lioncash 6866373202 CodeWindow: Replace wxStaticText/wxTextCtrl combo with a wxSearchCtrl
Same thing, one control.
2015-09-26 22:38:07 -04:00
Tillmann Karras 38ae572203 Debugger: fix -Wunused-private-field warning 2015-09-12 10:01:26 +02:00
Lioncash 633be0387d General: Remove unimplemented function prototypes 2015-09-05 22:01:07 -04:00
Lioncash a824f6a74c Debugger: Remove unused instance variables 2015-08-16 18:30:07 -04:00
Lioncash 40b89627f1 JitWindow: Use TitleCase for the JIT block viewer tab
Makes the title consistent with all other tabs.
2015-07-19 18:20:24 -04:00
Lioncash 81878d7b56 DolphinWX: Get rid of some magic numbers in MemoryView and MemoryWindow 2015-07-09 07:59:34 -04:00
degasus c375111076 Options: merge SCoreStartupParameter into SConfig 2015-06-12 19:07:45 +02:00
Ryan Houdek 59e2225f7d Remove ARMv7 support. 2015-06-07 22:44:13 -05:00
Ryan Houdek d0ae3f7d24 Break out the disassembler code from the WXWidgets UI.
This cleans up some of the code between core and UI for disassembling and dumping code blocks.
Should help the QT UI in bringing up its debug UI since it won't have to deal with this garbage now.
2015-05-31 18:16:59 -05:00
Tillmann Karras 30ebb2459e Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
Tillmann Karras cefcb0ace9 Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
Lioncash 5c3fecc8e5 DolphinWX: Add missing breaks to a switch in RegisterView
Technically the fallthrough would never happen, as the row numbers correspond to the grid view (which will always be zero or greater). However, it gets rid of compiler warnings on higher warning levels.
2015-05-23 22:16:39 -04:00
Lioncash 8dc2909c00 JitWindow: Add missing virtual destructor to HostDisassembler
HostDisassemblerLLVM has a destructor, but the class uses a pointer to the base class.
2015-05-20 12:27:47 -04:00
Lioncash a7e9aea797 DolphinWX: Remove unnecessary includes 2015-05-08 12:39:26 -04:00
Lioncash 88f7536d81 DolphinWX: Remove unnecessary forward declarations
These are all fully defined
2015-04-28 17:32:38 -04:00
Lioncash 263e64e939 DolphinWX: Make some debugger functions/vars private
Some classes expose things that aren't used outside of them (and in some cases, shouldn't be exposed).
2015-04-27 20:42:18 -04:00
comex 3499f2c2d0 To make up for it, make pressing enter on the value textbox set the value. 2015-04-24 22:19:21 -04:00
comex 0c18e5886d Remove mnemonics in MemoryWindow.
On OS X, this broke Cmd-V to paste in the text boxes.  Apparently wx
thinks having mnemonics (which are Alt-* on Windows) be Cmd-* on OS X,
even if this disables standard shortcuts, is a good idea.

Lioncash suggested just getting rid of the accelerators on non-menu
controls, so I'm doing that rather than disabling them only on OS X.
2015-04-24 22:06:03 -04:00
comex 37d00cceda Fix wx bullshit which made the watch view assert on my machine.
1) Apparently wxString::Format is type safe, and passing a u32 to it
with the format "%lu" crashes with a meaningless assertion failure.
Sure, it's the wrong type, but the error sure doesn't help...

2) "A MenuItem ID of Zero does not work under Mac".  Thanks for the
helpful assert message, no thanks for making your construct have random
platform-specific differences for no reason (it's not like menu item IDs
directly correspond to a part of Cocoa's menu API like they do on
Win32).
2015-04-24 22:04:46 -04:00
Lioncash 2cddb8f480 Debugger: Update the registers/watches before refreshing grids. 2015-04-15 00:13:13 -04:00
Lioncash 180854c617 Debugger: Fix memory leaks related to grid tables
Incrementing the reference count here isn't necessary, as they construct with a count of 1. Incrementing again results in the attributes not being freed.
2015-04-07 23:16:29 -04:00
Lioncash 5ada887f94 DolphinWX: Get rid of wxGrid-based casts in the debugger.
This technically also fixes a memory leak in WatchView.cpp, because the table setting was done such that the grid wouldn't take ownership of the table, which means said table wouldn't be deleted in the grid's destructor.
2015-03-24 14:09:33 -04:00
skidau 12155ddee4 Added the ability to split the Debugger window horizontally and vertically via the Add Panes menu. 2015-03-07 12:33:33 +11:00
Lioncash d50c56c2e4 DolphinWX: Remove an unnecessary sizer from the watch window
The AUI manager already has the grid in place. Setting the sizer isn't needed.
2015-02-26 09:58:38 -05:00
skidau f71f376371 Merge pull request #2117 from lioncash/id
DolphinWX: Remove unnecessary control IDs
2015-02-26 12:49:07 +11:00
Ryan Houdek d6fcd85110 Merge pull request #2127 from lioncash/aui
DolphinWX: Relocate the address search into the code window
2015-02-25 10:36:07 -06:00
Lioncash ce4b73388a DolphinWX: Relocate the address search into the code window
It's only function is in this pane. Leaving it on the main application toolbar not only looks gross, but subverts what a user might think it applies to.
2015-02-25 00:16:17 -05:00
Lioncash 792e166f87 Merge pull request #2118 from lioncash/aui
DolphinWX: Use AUI in the code window.
2015-02-24 21:45:16 -05:00
Lioncash fd11f8fd29 DolphinWX: Use AUI in the code window.
Allows for resizing of the callstack, function call/callers windows etc.
First step in slightly improving the code window.
2015-02-24 21:31:28 -05:00
Lioncash 30c91a3003 DolphinWX: Remove unnecessary control IDs
These don't need to be specifically identified.
2015-02-24 08:31:52 -05:00
Lioncash d50e7562af DolphinWX: Make RAM watch strings translateable 2015-02-23 11:02:42 -05:00
skidau 57e9d59704 Merge pull request #1978 from lioncash/dspwind
DSPDebugWindow: Fix issue where the DSPLLE window would hang Dolphin on OSX
2015-02-23 12:57:27 +11:00
Lioncash a60d3306b1 PowerPC: Get rid of magic numbers related to interp/JIT initialization. 2015-02-19 12:16:53 -05:00
Lioncash 50f600c834 DolphinWX: Change Enable(false) calls into Disable() where possible 2015-02-14 16:00:15 -05:00
magumagu ac54c6a4e2 Make address translation respect the CPU translation mode.
The PowerPC CPU has bits in MSR (DR and IR) which control whether
addresses are translated. We should respect these instead of mixing
physical addresses and translated addresses into the same address space.

This is mostly mass-renaming calls to memory accesses APIs from places
which expect address translation to use a different version from those
which do not expect address translation.

This does very little on its own, but it's the first step to a correct BAT
implementation.
2015-02-11 13:56:22 -08:00
Lioncash 73b77f55ba DSPDebugWindow: Fix issue where the DSPLLE window would hang Dolphin on OSX 2015-01-28 14:01:11 -05:00
Ryan Houdek 95ac48d605 Improve the LLVM disassembler in the debug window.
There are a couple things in this PR.
Fixes a bug where if we hit an invalid instruction we would infinite loop.
Fixes an issue where on AArch64 it would show invalid instructions for all NEON instructions.
This was due to asimd and crc being optional extensions and LLVM not enabling them by default.
So we have to specify a CPU which has the feature. LLVM 3.6 will let us select by features instead of CPUs, but we don't have a release of that quite
yet.

If we are on an architecture that has a known instruction size, we will continue onward after hitting the invalid instruction. If we don't have a
known instruction size like on x86, we will instead just dump the rest of the block.
2015-01-18 15:31:40 -06:00
Stevoisiak 6ad5e54970 DolphinWX/Globals: Variable naming consistency 2014-12-20 21:43:11 -05:00
skidau 5313dd1b8c Merge pull request #1702 from CarlKenner/DebugSymbols
Fix many bugs with the Symbols menu (when run with -d argument).
2014-12-17 22:04:56 +11:00
CarlKenner 6e7eb52211 Rename menu items, stop using PanicAlertT, remove -d when running from visual studio.
I accidentally committed my addition of the -d option that I used for testing, now it's fixed.
2014-12-17 01:12:33 +10:30
CarlKenner dfd915eb53 Merge bad map file loading into the original function. 2014-12-17 01:11:58 +10:30
CarlKenner f95f43fdde Apparently c_str doesn't return a C str. 2014-12-17 01:11:52 +10:30
CarlKenner e246aaf419 Add "Load bad map file" option for map files on disc that don't quite match.
Currently it is very simple and naive, but filters out most of the bad matches.
2014-12-17 01:11:41 +10:30
CarlKenner f54d9e33c2 Fix many bugs with the Symbols menu (when run with -d argument).
The Symbols menu is now fully useable.
2014-12-17 01:11:36 +10:30
Lioncash 20fc2d5674 MemoryWindow: Remove wxSprintf call, use wxString::Format instead. 2014-12-12 10:29:07 -05:00
Lioncash 04ee0245e2 WatchView: Pass string by reference in SetWatchName 2014-11-15 14:06:12 -05:00
Lioncash ffc00b42e9 MemoryView: Fix a dealloc of a stack reference
stack allocation only works with the root menu. Any other children must be
heap allocated.

These however, will be freed by wxWidgets.
2014-11-13 20:10:40 -05:00
Lioncash 892bbdade6 DolphinWX: Eliminate some memory leaks
Since the menus aren't actually assigned a parent, they would not be freed by wx. Plus, these should have initially been constructed on the stack in the first place.
Technically any time someone right-clicked the game list they would be leaking memory.
2014-11-11 09:50:16 -05:00
Lioncash ac387031a4 DolphinWX: Kill off trivial event tables
Also fixes some of the wonky stuff in Main where we would fire an event to do post-init stuff which isn't necessary anymore.
2014-11-09 00:08:33 -05:00
Lioncash 210567a919 DolphinWX: Remove unnecessary forward declarations 2014-11-07 22:16:13 -05:00
Lioncash ee22d091a0 DolphinWX: Eliminate most usages of event tables in the debugger.
Moves things over to Bind.
2014-11-05 23:03:06 -05:00
Jasper St. Pierre dd0aadac97 MemoryWindow: Use p_pFakeVMEM, not the virtual mirror
They point to the same contents, so there's no reason to use the
mirror. This lets us make all the mirrors static.
2014-11-02 16:34:17 -08:00
skidau dbddc5f8e2 Fixed a warning in the add memcheck from Watch window 2014-10-31 11:26:17 +11:00
Rohit Nirmal 55f91ecba4 DolphinWX: Fix -Wsign-compare warnings. 2014-10-28 21:07:48 -05:00
Rohit Nirmal b70a75776e DolphinWX: Remove unused variable. 2014-10-28 21:02:47 -05:00
skidau 4570dd7eeb Fixed a crash that would occur if a new watch were added by entering a watch name.
Code style updates.
2014-10-26 23:23:45 +11:00
skidau 73dca1ca33 Added a new option to add memchecks from the Watch window.
Fixed watch labels from being truncated at the first whitespace.
2014-10-26 16:14:17 +11:00
skidau 8d2931cf18 Breakpoints and watches are now loaded and saved on start/stop.
Saved Breakpoints and watches per game in the game ini.
2014-10-26 14:56:03 +11:00
skidau b73130af77 Added Load/Save function for the Watch window.
Made the floating windows toolbars dockable.
Scaled down the breakpoint toolbar icons to 16x16.
2014-10-26 14:56:03 +11:00
skidau b34e220086 Added a "Delete watch" context menu to the Watch window.
Added a "View memory" command to the context menu.
2014-10-26 14:56:03 +11:00
skidau 290e1bed37 Disable block linking while debugger stepping or if there are breakpoints 2014-10-26 14:56:02 +11:00
skidau d0a3bb7650 Added "Add to watch" context menu items to the Memory and Register windows.
Added "View memory" context menu item to the Register window.
2014-10-26 14:56:02 +11:00
skidau 613cae613a Added a RAM Watch window to the debugger
Conflicts:
	Source/Core/Core/HW/Memmap.cpp
	Source/Core/Core/HW/Memmap.h
	Source/Core/DolphinWX/Debugger/CodeWindow.h
2014-10-26 14:56:02 +11:00
skidau df37649b9f Changed the step over routine to a single stepping version that steps until a blr is encountered.
Cleared out all temporary breakpoints on each step to prevent phantom breakpoints from stopping the debugger.
2014-10-26 14:56:02 +11:00
skidau 219a5078e8 Added a "Step Out" (aka "Step return") function to the debugger.
Conflicts:
	Source/Core/DolphinWX/Debugger/CodeWindow.h
2014-10-26 14:56:01 +11:00
Ryan Houdek cb10bef9a4 Implements LLVM based disassembler for the debugger.
This will work for all of our platforms, x86, ARMv7, and AArch64.
Main issue with this is that LLVM's cmake files aren't correctly finding the LLVM install.
Not sure if this is Ubuntu's issue or not, it may just work on other operating systems.

We could potentially improve this, you can pass in a specific CPU in to the LLVM disassembler. This would probably affect latency times that are
reported by LLVM's disassembly? This needs to be further investigated later.
2014-10-24 18:10:21 -05:00
Ryan Houdek ecf65d6f1f Cleans up the JIT block viewer in the WX UI.
This code was an absolute mess. It had allocated an arbitrarily large string buffer to hold instructions that were disassembled.

Strip out all of the nasty raw C string manipulation and replaces it with ostringstream usage.
Fixes an issue where if you didn't have a JIT recompiler running then Dolphin would instantly crash if you tried comparing PPC to x86 code.
Changed the disassembly of the host side code from being inline to the function to instead being in a class, this will be required when I add support
for ARMv7 and AArch64 to this window.
2014-10-21 12:27:59 -05:00