|
|
ptrace(S) allows a process to take control of another process while it is running. This is subject to various security controls: you must own the process you are attaching to, you must be able to read its code file, and the "attacked" process must not have different effective and saved UIDs or GIDs.
dbXtra/dbxtra (and dbx) uses these features to allow you to debug a running process. This is done by specifying the PID of the target process on the command line instead of the name of a core file. Remember that you still have to specify the name of the object file.
The process will be stopped and the debugger will take control of the process. Note:
In particular, this applies to alarm(S). If the process you attach to is sleeping in alarm(S) when you take control, and the alarm timer expires before the process is continued, the alarm signal will be lost. You should use the cont command to issue the alarm signal in this case.
Also remember that a ptrace(S) restriction is that only one signal can be delivered when a process is continued. If more than one signal was pending, the others will be lost.
Any changes you made (like assigning to variables) will remain in effect.
If you do not issue a detach command, the process will be killed when the debugger terminates. This prevents a possibly modified process from continuing when it should not.