eteran / edb-debugger

edb is a cross-platform AArch32/x86/x86-64 debugger.
GNU General Public License v2.0
2.7k stars 326 forks source link

Introduce "all-stop" setting #691

Open eteran opened 5 years ago

eteran commented 5 years ago

Getting the fine details of multi-threaded debugging is hard. edb currently still is a bit quirky on this front but works wonderfully when dealing with individual threads.

The idea here is to have a setting called "all-stop mode". The default would be enabled, which is essentially what edb currently attempts to do. That is, when an event comes in, it does its best to ensure that all other threads are paused to ensure a consistent debug state.

However, I have seen debuggers which don't pause all threads on an event, instead, they only worry about the thread which received the event. (gdb offers the ability to control this behavior calling it "all-stop mode as well :-P). All other threads keep on making whatever progress they can. When the setting is disabled, that's what edb would allow.

The caveat being that the application can change its state while you are looking at it, but if the user finds that useful, then that's OK.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/68016263-introduce-all-stop-setting?utm_campaign=plugin&utm_content=tracker%2F14326212&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F14326212&utm_medium=issues&utm_source=github).