PINCE
PINCE copied to clipboard
Auto pause & continue
I've noticed for many actions PINCE wants the target to be paused. This is quite annoying to retrieve the message and then manually pause, perform the action (i.e. place breakpoint) and then resume the target.
I think this can be automated by PINCE. If target game is running => pause => do action => resume. If target game is already paused => do action (like as of now). This is also what CE does. And it can be an opt-in if someone thinks this is a problem somehow.
I actually implemented this before, it was done with the execute_with_temporary_interruption
function in GDB_Engine.py
. But I've disabled it to stay true to the working behaviour of GDB. I can enable it again for some functionalities of PINCE if you want. How about we start from the breakpoints as you mentioned? If you like the implementation I'll continue doing the same for other functionalities.
Yes breakpoints (set & unset alias stop) it would be really helpful. If this can cause issues etc. I would still say it's fine to make it an opt-in feature so people (like me) can turn this on if wanted.
Aight, thanks for reporting. I'll check my schedule and fix this asap
I've added this feature for breakpoints with the latest patch (23ee793a597284dbdd3b44fccd49316d922b7010). Test it and tell me if you encounter any bugs
Changes:
-
execute_with_temporary_interruption
is now a decorator. Upon usage, it'll apply the effect above to the decorated function
I've downloaded it again from github and overwritten the existing files. Then run PINCE but there is still a message box. Is there any specific instruction on how to update PINCE or what else am I doing wrong?
Running git pull
in the root directory of PINCE is enough to update unless there's a structural change (like gdb version update)
The bug you've encountered is legit. I've noticed that if the auto-pause breakpoint is triggered the moment it's set, you'll see that messagebox. The process will be stopped and then ran afterwards as intended, so the feature works, but you'll still see that messagebox. I think there's a race condition in PyQT notifiers. I'll look into this condition further asap.
So what's the status on this. I was about to create an issue suggesting the same thing. Is it available as of now?
It's available for certain functions but most of the GDB functionality requires you to stop manually. Auto-pause might cause unstable behaviour for some functions so I don't think that I'll apply this feature to all of them. Is there any specific feature you'd like to use auto-pause on?
Well when skimming through the disassembly it's ok to press f2 for the time being, but when ticking what reads/writes this address it's kinda strange that you have to halt the process, to then instantly start it again because there will be no use.
I've now applied auto-pause on that feature, have fun
PINCE now uses background execution for gdb, you don't need auto-pause anymore, closing this issue