Commit Graph

340 Commits

Author SHA1 Message Date
pent0
4a53853f79 Update UWP port 2018-12-10 20:55:07 +07:00
Unknown W. Brackets
653129c528 Debugger: Add an event for GE dump recording. 2018-09-01 10:59:37 -07:00
Unknown W. Brackets
4ce2b64ef7 Debugger: Refactor to allow simpler broadcasting.
It's okay to mix a bit for simple ones, I think.
2018-09-01 10:15:22 -07:00
Henrik Rydgård
eddaf97938 Add submodules, namespace json to prepare for the addition of rapidjson (sigh) 2018-08-13 00:18:54 +02:00
Unknown W. Brackets
91a43c9d32 Debugger: Add force resume/kill thread API. 2018-07-07 18:58:37 -07:00
Unknown W. Brackets
2e6a52ed51 Debugger: Add backtrace API. 2018-07-07 18:36:47 -07:00
Unknown W. Brackets
8a7662adae Debugger: Add function symbol add/remove API. 2018-07-07 09:56:59 -07:00
Unknown W. Brackets
2133b18198 Debugger: Add APIs for texture and CLUT. 2018-07-07 09:56:59 -07:00
Unknown W. Brackets
8ae157e27f Debugger: Update to latest armips. 2018-06-30 14:18:26 -07:00
Unknown W. Brackets
f0694ba115 Debugger: Add some docs for new APIs. 2018-06-16 15:42:42 -07:00
Unknown W. Brackets
e6917cccf6 Debugger: Add APIs to retrieve render image. 2018-06-16 15:33:02 -07:00
Unknown W. Brackets
085bcde865 Debugger: Ignore invalid branches.
These happen on bytes that are not actually code.
2018-06-08 06:59:18 -07:00
Unknown W. Brackets
25085fa394 Debugger: Add func name and data symbol to disasm. 2018-06-08 06:59:18 -07:00
Unknown W. Brackets
b114656321 Debugger: Allow conditions on threadID/moduleID.
And now step over/out/into can tie to the correct thread.
2018-06-08 06:59:18 -07:00
Unknown W. Brackets
a863ce79ad Debugger: Allow stepping based on thread. 2018-06-08 06:59:18 -07:00
Unknown W. Brackets
b828497fe2 Debugger: Avoid some lock ordering issues.
Ideally get rid of the memory lock...
2018-06-08 06:59:18 -07:00
Unknown W. Brackets
5bfba9b284 Debugger: Add HLE API funcs.
Lumping function symbols in here too, they're pretty related...
2018-06-08 06:59:18 -07:00
Unknown W. Brackets
5670fc03ae Debugger: Add debug interfaces for threads.
This way we can switch context.
2018-06-08 06:59:18 -07:00
Unknown W. Brackets
3193772e78 Debugger: Use a lock for memory reallocs.
Simpler this way, no need to remember to lock memory.
2018-06-08 06:59:18 -07:00
Unknown W. Brackets
8598fc9912 Debugger: Add some missing memory locks.
We can restart memory when loading save states, so we need this even while
we've got startup/shutdown locked.
2018-06-08 06:59:18 -07:00
Unknown W. Brackets
b2cc4a0965 Debugger: Add memory breakpoint management. 2018-06-08 06:59:18 -07:00
Unknown W. Brackets
29d93c56c7 Debugger: Initial breakpoint APIs. 2018-06-08 06:59:18 -07:00
Unknown W. Brackets
18dcea4cdc Debugger: Disasm search API. 2018-06-08 06:59:18 -07:00
Unknown W. Brackets
6cf24b34fc Debugger: Add thread safety to breakpoints. 2018-06-08 06:59:18 -07:00
Unknown W. Brackets
5b132c904a Debugger: Fix resume not skipping breakpoints. 2018-06-08 06:59:18 -07:00
Unknown W. Brackets
65feb5f09c Debugger: Include assembler API. 2018-06-08 06:59:18 -07:00
Unknown W. Brackets
2f3b6c19d0 Debugger: Poll frequently after stepping.
This will make us listen for events slightly less often, so we don't want
to sustain it.
2018-06-08 06:59:17 -07:00
Unknown W. Brackets
fc8ad3b47b json: Optimize writing a bit.
This improves the responsiveness of certain APIs.
2018-06-08 06:59:17 -07:00
Unknown W. Brackets
ccea863f00 Debugger: Use fragments for long chunks.
Gets it on the wire faster.  More importantly, this allows us to usually
avoid rampant memory allocation even for large responses.
2018-06-08 06:59:17 -07:00
Unknown W. Brackets
e746a2d106 Debugger: Add stepping to WebSocket API. 2018-06-08 06:59:17 -07:00
Unknown W. Brackets
f66738eac7 Debugger: Add cpu.evaluate method.
Probably useful for a bunch of things, really.
2018-06-08 06:59:17 -07:00
Unknown W. Brackets
8a0e02e223 Debugger: Prevent crazy disasm range.
Also add some documentation.
2018-06-08 06:59:17 -07:00
Unknown W. Brackets
1c107308cd Debugger: Add additional encoding/symbol info. 2018-06-08 06:59:17 -07:00
Unknown W. Brackets
944948a5f4 Debugger: Initial disasm API. 2018-06-08 06:59:17 -07:00
Unknown W. Brackets
4da97b3f9e Debugger: Lock during startup/shutdown.
Otherwise things can get freed while we're trying to inspect them.
2018-06-08 06:59:17 -07:00
Unknown W. Brackets
b756d92139 Debugger: Add version event for future proofing.
Game isn't precisely right, but it's close enough.
2018-06-08 06:59:17 -07:00
Unknown W. Brackets
05c560b52d Debugger: Include PC and ticks in stepping events. 2018-06-08 06:59:17 -07:00
Unknown W. Brackets
3dac5f2103 Debugger: Add current game info. 2018-06-08 06:59:17 -07:00
Unknown W. Brackets
77131e737b Log: Use a separate field for the timestamp.
Better than parsing it since we already have the header separate.  Simpler
too.
2018-06-08 06:59:17 -07:00
Unknown W. Brackets
6bec3db3fb Debugger: Disconnect on shutdown/disable.
Although, it could be made safe to keep them up when restarting with
debugging still enabled.
2018-06-08 06:59:16 -07:00
Unknown W. Brackets
f02bd4daff Debugger: Use a counter when entering stepping.
This allows us to poll coreState and know if a new stepping needs to be
sent.  This is useful to allow e.g. regs to show changes per step.
2018-06-08 06:59:16 -07:00
Unknown W. Brackets
d67a1d4a3a Debugger: Allow pinging current status.
Helps especially when reconnecting.
2018-06-08 06:59:16 -07:00
Unknown W. Brackets
c44d8dbe2d Debugger: Name the WebSocket debugger thread. 2018-06-08 06:59:16 -07:00
Unknown W. Brackets
a341994622 Debugger: Add cpu.stepping and cpu.resume. 2018-06-08 06:59:16 -07:00
Unknown W. Brackets
a4044fd6a0 Debugger: Reorganize state handling.
Looking like this will be needed for disasm caches, etc.
2018-06-08 06:59:16 -07:00
Unknown W. Brackets
0a21063525 Debugger: Cleanup, add initial API docs. 2018-06-08 06:59:16 -07:00
Unknown W. Brackets
3c458310ed Debugger: Allow setting regs to inf/nan. 2018-06-08 06:59:16 -07:00
Unknown W. Brackets
be3b50dd74 Debugger: Improve JSON number parsing.
With gason, this becomes doable without overflow issues.
2018-06-08 06:59:16 -07:00
Unknown W. Brackets
1f987bf1c1 Debugger: Initial register get/set APIs. 2018-06-08 06:59:16 -07:00
Unknown W. Brackets
123723286d Debugger: Synchronize error events using tickets. 2018-06-08 06:59:16 -07:00
Unknown W. Brackets
b37d59e8fa Debugger: Organize WebSocket event handling.
Just a starting point to organize it.  Trying to keep it simple.
2018-06-08 06:59:16 -07:00
Unknown W. Brackets
c2b9b5a9e8 Debugger: Serve a simple log listener WebSocket.
Planning to add more functionality to it, and sharing the reporting port
is possibly not ideal - although it would make discovery easier.
2018-06-08 06:59:16 -07:00
Unknown W. Brackets
eb4b59b530 arm64jit: Enable breakpoints.
Memory breakpoints not yet really tested.
2018-06-06 17:31:56 -07:00
Unknown W. Brackets
3c8cc5ab64 Debugger: Fix initialization issues.
Sometimes temp breakpoints had log set by accident.
2018-06-06 17:31:56 -07:00
Unknown W. Brackets
0f84c2e995 Debugger: Consistently handle invalid addresses. 2018-06-06 05:58:49 -07:00
Unknown W. Brackets
0b8359fd77 Debugger: Add mutexing to disassembly manager.
It was crashing when accessing from another thread.

If in the future we go down to only the remote debugger, we could
potentially remove this.
2018-06-06 05:58:49 -07:00
Unknown W. Brackets
89f89ec749 Debugger: Defer active symbol updates.
This makes it faster when loading many modules/functions/etc., for example
when using the freeze debug feature.
2017-12-26 18:11:22 -08:00
Henrik Rydgård
21fe73c8e7 Switch strncpy to truncate_cpy in a bunch of places. 2017-05-26 19:04:08 +02:00
Unknown W. Brackets
7613fd97aa Windows: Fix minor leak in disassembly UI. 2017-04-27 20:02:49 -07:00
Henrik Rydgard
26a2d42731 Big mutex overhaul - remove our custom ones, make them non-recursive where possible 2017-02-28 11:40:29 +01:00
Henrik Rydgard
03dab0fdbd More UWP prep 2017-02-25 09:57:22 +01:00
Henrik Rydgård
635b2ada43 Remove a function that didn't make a lot of sense. 2017-01-26 09:50:16 +01:00
latot
7047ad2271 fix sscanf types 2016-12-02 22:46:52 -03:00
Unknown W. Brackets
747a6ec524 Debugger: Add custom log expressions.
Similar to Visual Studio, just use {a1} to log the value of register a1.
Supports anything the expression parser supports.
2016-08-04 13:29:22 -07:00
Unknown W. Brackets
e4ca124b0e Debugger: Add custom breakpoint log message. 2016-08-04 13:07:56 -07:00
Unknown W. Brackets
9972e5b10a Debugger: Allow logging on CPU breakpoints. 2016-08-04 12:39:29 -07:00
Unknown W. Brackets
a9ad0cd471 Debugger: Make breakpoint actions more generic. 2016-08-04 12:02:44 -07:00
Unknown W. Brackets
4578c3cb54 jit-ir: Implement memory breakpoints.
These generally work, but likely delay slots will make downcount slightly
off, and won't resume when you hit run again without manually stepping
through them.
2016-07-02 16:38:30 -07:00
Henrik Rydgard
8b450c8034 Merge NativeJit.cpp/h with JitCommon.cpp/h 2016-05-01 11:39:59 +02:00
Henrik Rydgard
a5be0976bd Remove preprocessor hacks to choose JIT implementation.
Opens up for having multiple JIT implementations available at runtime,
which could be use for experimenting with new JIT compiler types or for
unit testing one JIT on another architecture.

Very few of the newly virtual calls are on any sort of critical path so
hopefully there will not be a performance loss.
2016-05-01 11:39:53 +02:00
Henrik Rydgard
3ba911bf07 Replace some calls to fopen with File::OpenCFile (utf8). 2016-01-17 15:59:20 +01:00
Unknown W. Brackets
86127b3d0d Update armips to latest version.
The new version has some speed and other improvements.
2015-12-26 20:30:35 -08:00
Henrik Rydgard
b998131581 Move the symbol map to the heap, deallocate it when no game is running. 2015-10-31 23:01:19 +01:00
Lioncash
b1901fbad2 Core: Remove unimplemented class function declarations 2015-10-18 10:55:11 -04:00
Unknown W. Brackets
936ccbf18a Fix symbolmap loading issue on MSVC 2015. 2015-09-07 09:24:15 -07:00
Unknown W. Brackets
e0f85a9c6b Native merge part 1: skip native/ in includes. 2015-09-06 12:19:33 -07:00
Unknown W. Brackets
9cb1151b67 x86jit: Disable replacements w/ breakpoints inside.
This does alter graphics (memcpys won't fire anymore), but it also means
breakpoints work which is nice.
2015-01-18 21:26:37 -08:00
Unknown W. Brackets
6382d794a7 Fix a debugger leak in an error case. 2015-01-17 18:54:01 -08:00
Unknown W. Brackets
a191b9ac7f Fix a potentially not null terminated string. 2015-01-17 18:42:59 -08:00
Unknown W. Brackets
ff59cd6e11 Fix a potential debug buffer overrun. 2015-01-17 18:21:03 -08:00
Henrik Rydgard
8ad1ea4c84 Split JitCommon.h so that you can include it without getting the "NativeJit" definition 2014-12-13 21:13:28 +01:00
Lioncash
cac632424c Core: Add missing override specifiers 2014-12-08 15:20:31 -05:00
Unknown W. Brackets
58ff826b73 Cleanup to link assembler on arm unittest builds. 2014-12-07 15:41:11 -08:00
Kingcom
f6cedcbff5 Replace assembler with a submodule 2014-11-23 21:09:40 +01:00
Unknown W. Brackets
2b16b5b79b Use XXH64 on 64-bit systems.
I'm not able to reproduce any real performance difference, but I know
there are some games which do more hashing and it may help there.
2014-10-26 17:49:24 -07:00
Henrik Rydgård
3b1476c8ec MIPSTables: Annotate fp and hi/lo in/out more accurately than just "other"
Some typo fixes
2014-10-12 19:46:50 +02:00
Henrik Rydgard
f84ebf6bff sprintf->snprintf, fix some too short buffers 2014-09-14 00:14:11 +02:00
Henrik Rydgard
1d7642fa48 Remove most mentions of the "_XBOX" define 2014-08-24 14:21:35 +02:00
Unknown W. Brackets
cd413ab659 Correctly break when disabled and temp bps overlap.
Only affects debugging, not usual gameplay.  Fixes #6700.
2014-08-08 08:53:44 -07:00
Unknown W. Brackets
55403e42c2 Introduce a memory shutdown lock.
This allows the debugger to access memory in a safe way that should never
crash.
2014-07-19 23:30:19 -07:00
Sacha
cd20288d99 Fix some compiler warnings. 2014-07-17 00:49:58 +10:00
Kingcom
dc80123b93 Add options to import/export .sym files from the menu 2014-06-30 00:02:22 +02:00
Unknown W. Brackets
2f6b63385d On breakpoint change, don't wait for core too long.
Fixes #6366.
2014-06-19 01:16:24 -07:00
Unknown W. Brackets
9efbc2694b Add an invalidate all method to the jit. 2014-06-19 01:13:06 -07:00
Unknown W. Brackets
561d0e5ef9 Check more ops for changing memory in debugger. 2014-06-19 00:48:33 -07:00
Unknown W. Brackets
38dde1f6b5 Fix a debugger crash on shutdown. 2014-06-08 16:35:39 -07:00
Unknown W. Brackets
c3a6092e26 Upgrade symbolmaps with module address info.
This fixes some issues with jit replacement only if you had a map laying
around.
2014-05-04 01:24:18 -07:00
Henrik Rydgård
0b3f1e4a5b Merge pull request #5621 from chinhodado/patch-2
Avoid using an invalidated iterator
2014-03-22 16:17:13 +01:00
Unknown W. Brackets
06b9e731e8 Linux buildfix.
Arg, stupid memcmp/sprintf...
2014-03-15 11:56:52 -07:00
Unknown W. Brackets
996fa39684 Reduce some unnecessary includes in Core/. 2014-03-15 10:41:07 -07:00
Henrik Rydgard
c80510fb3b MemMap should not be included in MIPS.h. 2014-03-15 10:45:39 +01:00
chinhodado
481250931c Avoid using an invalidated iterator 2014-03-07 16:43:02 -05:00
Henrik Rydgård
374e12afc3 Merge pull request #5590 from unknownbrackets/xbox
Merge more parts of #4716
2014-03-03 13:37:21 +07:00
Ced2911
d82911de58 [Xbox] fixes 2014-03-02 11:27:20 -08:00
Ced2911
cc9f238d36 [xbox] 360 support for Core 2014-03-02 11:22:02 -08:00
Unknown W. Brackets
e3506ead69 Clear the symbol map between each test.
This way we could, for example, test function replacement properly.

Actually slows down tests because it spends more time correctly
determining the function boundaries.
2014-03-02 10:20:40 -08:00
Unknown W. Brackets
d22793e257 Avoid a dangerous cast in LoadSymbolMap().
Not sure if we can have any safety with an int cast like that...
2014-02-15 16:23:18 -08:00
Unknown W. Brackets
8948990871 Optimize searching for existing symbols.
Checking every time is slow, we should just skip by the address.  Some is
just the locking overhead.
2014-02-14 22:26:35 -08:00
Unknown W. Brackets
04776c8125 Small optimization: avoid fallback if possible.
Speeds up symbol map loading a little bit (when inserting new items.)
2014-02-14 22:07:39 -08:00
Unknown W. Brackets
26b4335637 Optimize symbol map in debug mode a bit more.
Avoid UpdateActiveSymbols().
2014-02-14 21:49:20 -08:00
Unknown W. Brackets
d279dcd454 Fix renaming a function from disassembly. 2014-02-11 07:45:13 -08:00
Henrik Rydgård
0f4ccf52f4 Update README. Avoid recursing the symbolmap lock when we don't need to. 2014-02-11 14:21:40 +01:00
Henrik Rydgård
b1d6eefb8a Call UpdateActiveSymbols only once from MIPSAnalyst instead of for every recognized function.
Reduces startup slowdown when using a function signature file drastically.
2014-02-11 11:21:56 +01:00
Henrik Rydgard
aae787168e Did not mean to commit this line. 2014-02-09 23:48:31 +01:00
Henrik Rydgard
ca500b0bf4 Add setting for Kitkat Immersive Mode on Android. 2014-02-09 23:16:08 +01:00
Kingcom
880be6d41d Module list in Windows debugger 2014-01-27 00:35:16 +01:00
Unknown W. Brackets
199552bc1b Small merge fix. 2014-01-26 14:13:43 -08:00
Henrik Rydgård
efd44a6933 Merge branch 'debugger2' of https://github.com/unknownbrackets/ppsspp into unknownbrackets-debugger2
Conflicts:
	Core/Debugger/Breakpoints.cpp
2014-01-26 23:10:37 +01:00
Unknown W. Brackets
fe2b62c27d Make the "on change" checkbox for memchecks work.
But, for now, only on sw and similar instructions, the rest don't work
yet and just always break.
2014-01-26 11:57:39 -08:00
Unknown W. Brackets
6b06494940 Oops, missed a c_str() conversion. 2014-01-26 01:56:28 -08:00
Unknown W. Brackets
983e195dd2 Fix possible module index overlap. 2014-01-26 00:02:01 -08:00
Unknown W. Brackets
76afb2a8d5 Avoid returning points from the symbol map.
Now that it uses a lookup, this is even more dangerous.  But, the maps
could be reordered while it's trying to print the pointer and cause that
data to become invalid.

This should be safe from race conditions.
2014-01-25 21:40:23 -08:00
Unknown W. Brackets
b1af4f4911 Write symbol maps as ".ppmap" instead.
This has some benefits:
 * They are smaller, but zgrep/zcat etc. still work.
 * Since the format is slightly different, bisecting won't overwrite.
 * It avoids conflicts with .map file associations.
2014-01-25 21:12:16 -08:00
Unknown W. Brackets
a2fa53d5c4 Track modules in the symbol map.
This makes it so things don't overlap confusingly, and also so that we can
replace funcs more correctly and sanely.

This is unfortunately a bunch more complicated...
2014-01-25 20:59:53 -08:00
Unknown W. Brackets
4de20258eb Don't bother writing an empty symbol map.
For example, when accidentally opening an invalid file.
2014-01-19 21:34:16 -08:00
Henrik Rydgård
e5e17fbc6e More include cleanup. Hoping for very slightly faster compile times.. 2013-12-30 10:49:05 +01:00
Henrik Rydgård
00c32ddadb Mostly get rid of including "Globals.h" 2013-12-30 10:17:11 +01:00
Unknown W. Brackets
db77dcd149 Fix some includes on Windows/etc. 2013-12-29 15:59:36 -08:00
Henrik Rydgård
be74da8f3c More include cleanup, hopefully buildfix Symbian 2013-12-30 00:23:04 +01:00
Henrik Rydgård
ce378b231f Delete CPU.cpp/h , cleanup 2013-12-30 00:11:29 +01:00
Henrik Rydgard
2140892074 Initial preparations for ability to replace game functions with custom implementations.
Also auto-saves hashmap additions and reapplies the hashmap on function
rename so that if you rename a function that exists in several copies
they will all be labelled.

Note that actual function replacement is not activated yet.
2013-12-17 12:27:20 +01:00
Unknown W. Brackets
12713a44a1 Attempt to prevent shutdown crash in debugger. 2013-12-14 14:56:04 -08:00
Henrik Rydgård
cfbd1b07e8 Some code reformatting in SymbolMap 2013-12-02 15:30:03 +01:00
Henrik Rydgård
16369dde47 Protect against a buffer overflow in symbolmap 2013-12-02 15:29:35 +01:00
pal1000
cfcfb20622 Warning fix in DisassemblyManager.cpp (Visual Studio 2013) 2013-12-02 12:39:01 +02:00
Henrik Rydgård
1c04e923f6 Merge pull request #4706 from Kingcom/Debugger
Automatically pause core when changing breakpoints
2013-12-02 01:51:15 -08:00
Kingcom
df40850617 Automatically pause core when changing breakpoints 2013-12-02 10:42:20 +01:00
Unknown W. Brackets
7de0b28961 Fix an unhandled case value warning. 2013-12-01 11:21:17 -08:00
Unknown W. Brackets
dd2e996838 Fix some type comparison warnings. 2013-12-01 11:21:16 -08:00
Henrik Rydgård
1296aad6c7 Merge pull request #4675 from Kingcom/Debugger
Small debugger fixes and enhancements
2013-11-29 08:30:08 -08:00
Kingcom
85abd37ed1 Small debugger fixes and enhancements 2013-11-29 17:21:48 +01:00
Unknown W. Brackets
79322103f2 Optimize DisassemblyFunction::getLineNum() a bit.
Improves scrolling performance in some cases in the debugger.
2013-11-28 23:48:12 -08:00
Henrik Rydgård
620bb14d6b Merge pull request #4662 from Kingcom/Debugger
Disassembler fix
2013-11-28 02:04:13 -08:00
Kingcom
cca750aab5 Fix invalid memory access on start, remove combo box code from symbol map 2013-11-28 10:49:02 +01:00
Henrik Rydgård
f8227132f9 Merge pull request #4657 from Kingcom/Debugger
Create data directives in disassembler
2013-11-28 01:20:21 -08:00
Unknown W. Brackets
bb41e015b9 Truncate func names when reading symbol maps.
Otherwise they'll get trashed.
2013-11-27 22:11:18 -08:00
Kingcom
577a46be09 Remove useless comment 2013-11-28 00:48:05 +01:00
Kingcom
561379f5c2 Create data directives in disassembler 2013-11-28 00:33:21 +01:00
Kingcom
eeb9667726 Fix QT build (hopefully) 2013-11-27 15:06:41 +01:00
Kingcom
5844d0107b Rewrite SymbolTable 2013-11-27 13:33:30 +01:00