[lldb-dev] Stop/Resume process, interrupting I/O

Mario Zechner badlogicgames at gmail.com
Sun Oct 26 03:56:11 PDT 2014


Hi,

i'm currently trying to understand how LLDB interrupts/resumes processes.
To my understanding, the Process implementation sends a SIGSTOP to the
inferior, which will stop the process. Alternatively, the process may be
stopped (e.g. breakpoint) while Process::DoHalt is executing, in which case
the event is marked as interrupted. I have a few questions regarding this:

1) How can i check wether an event was marked as interrupted via the API?
SBProcess has a couple of static methods like GetStateFromEvent, but none
of these allow me to check if the event was marked as interrupted
2) SIGSTOP seems to interrupt any I/O call, e.g. getchar, listen, and so
on. Upon a resume, these functions will simply return (e.g. returning EOF)
instead of continuing waiting for input. Is there any way to have this not
happen?

Our problem is, that we need to stop/resume the process to implement parts
of JDWP (Java debugging wire protocol). Some JDWP commands require us to
stop the process, read some memory regions and resume the process again,
letting the inferior think that nothing has happened. All of this should
not interfere with normal program execution, e.g. a file read shouldn't be
interrupted because we stopped the inferior via SBProcess:Stop().

As always, thanks for all your help!

ciao,
Mario
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20141026/078b7707/attachment.html>


More information about the lldb-dev mailing list