Debugger: Add settings to control the symbol analysis passes #11901
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of Changes
This adds settings to control what and when analysis passes get run, as well as a new option in the debugger to re-run analysis on demand. This is the sequel to this PR.
The default behaviour is now to only run the analysis passes if the user opens the debugger. I think this is a lot saner than the previous behaviour, and can save on the order of 100MB of memory if the user wants to play a .mdebug game without opening the debugger.
As part of this I ended up rewriting some of the analysis passes. Most notably the function hashing system is now a lot smarter in determining when it should hash functions. Previously it would hash all the functions multiple times a second if the debugger was open (whoops!). Now it just hashes the ones that have currently visible symbol tree nodes once a second. Maybe this could've been a separate PR, but I think it's okay to include it.
Screenshots:
Rationale behind Changes
Give the user more control over how symbols are loaded. The function scanning options should be especially useful for use with games that load their own code at runtime, for example.
Give the GS dump tab a friend.
Suggested Testing Steps
Try running analysis on a bunch of games with and without symbols, testing different options in the analysis dialog, the global settings dialog, and the per-game settings dialog.