Inferior calls

The print and call commands take an expression to evaluate, and this may include calls to functions in the program being debugged. These are known as inferior calls. For example:

99% 1,160,367> print table_contains(table, 999)
No symbol "table" in current context.

The print command takes an expression in the language of the program being debugged, so that, for example, you can perform arithmetic on the result of the inferior call:

99% 1,160,367> print (char *)strerror(13) + 3
$1 = 0x7ffff7f602f9 "mission denied"

Volatile mode

UDB runs inferior calls in volatile mode, that is, in a temporary process which is discarded when the call completes. This means that changes to program state are reverted after the inferior call completes, are not written into the event log, and do not appear in the LiveRecorder recording.

Side effects

The only side effects that are defined are writes to the standard output and error streams, provided that the program has at no point closed the corresponding file descriptors.

Note

UDB currently has an issue (#4695) in which standard output and error are closed for inferior calls in replay mode if they are not TTYs. This means writes to these streams will fail in this case. Contact Undo Support if this is affecting your usage of UDB.