219 lines
5.3 KiB
XML
219 lines
5.3 KiB
XML
<chapter id='Debugging_Aids'>
|
|
<title>Debugging Aids</title>
|
|
|
|
<para>
|
|
The debugging aids are intended for use primarily by Xkb implementors and are
|
|
optional in any implementation.
|
|
</para>
|
|
|
|
|
|
<para>
|
|
There are two bitmasks that may be used to control debugging. One bitmask
|
|
controls the output of debugging information, and the other controls behavior.
|
|
Both bitmasks are initially all zeros.
|
|
</para>
|
|
|
|
|
|
<para>
|
|
To change the values of any of the debug controls, use <emphasis>
|
|
XkbSetDebuggingFlags</emphasis>
|
|
.
|
|
</para>
|
|
|
|
<informaltable frame='none'>
|
|
<?dbfo keep-together="always" ?>
|
|
<tgroup cols='1' align='left' colsep='0' rowsep='0'>
|
|
<colspec colname='c1' colwidth='1.0*'/>
|
|
<tbody>
|
|
<row>
|
|
<entry role='functiondecl'>
|
|
Bool <emphasis>
|
|
XkbSetDebuggingFlags</emphasis>
|
|
(<emphasis>
|
|
display, mask, flags, msg, ctrls_mask, ctrls, ret_flags, ret_ctrls</emphasis>
|
|
)
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry role='functionargdecl'>
|
|
Display * <emphasis>
|
|
display</emphasis>
|
|
; /* connection to X server */
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry role='functionargdecl'>
|
|
unsigned int <emphasis>
|
|
mask</emphasis>
|
|
; /* mask selecting debug output flags to change */
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry role='functionargdecl'>
|
|
unsigned int <emphasis>
|
|
flags</emphasis>
|
|
; /* values for debug output flags selected by <emphasis>
|
|
mask</emphasis>
|
|
*/
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry role='functionargdecl'>
|
|
char * <emphasis>
|
|
msg</emphasis>
|
|
; /* message to print right now */
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry role='functionargdecl'>
|
|
unsigned int <emphasis>
|
|
ctrls_mask</emphasis>
|
|
; /* mask selecting debug controls to change */
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry role='functionargdecl'>
|
|
unsigned int <emphasis>
|
|
ctrls</emphasis>
|
|
; /* values for debug controls selected by <emphasis>
|
|
ctrls_mask</emphasis>
|
|
*/
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry role='functionargdecl'>
|
|
unsigned int * <emphasis>
|
|
ret_flags</emphasis>
|
|
; /* resulting state of all debug output flags */
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry role='functionargdecl'>
|
|
unsigned int * <emphasis>
|
|
ret_ctrls</emphasis>
|
|
; /* resulting state of all debug controls */
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>
|
|
<emphasis>
|
|
XkbSetDebuggingFlags</emphasis>
|
|
modifies the debug output flags as specified by <emphasis>
|
|
mask</emphasis>
|
|
and <emphasis>
|
|
flags</emphasis>
|
|
, modifies the debug controls flags as specified by <emphasis>
|
|
ctrls_mask</emphasis>
|
|
and <emphasis>
|
|
ctrls</emphasis>
|
|
, prints the message <emphasis>
|
|
msg</emphasis>
|
|
, and backfills <emphasis>
|
|
ret_flags</emphasis>
|
|
and <emphasis>
|
|
ret_ctrls</emphasis>
|
|
with the resulting debug output and debug controls flags.
|
|
</para>
|
|
|
|
|
|
<para>
|
|
When bits are set in the debug output masks, <emphasis>
|
|
mask</emphasis>
|
|
and <emphasis>
|
|
flags</emphasis>
|
|
, Xkb prints debug information corresponding to each bit at appropriate points
|
|
during its processing. The device to which the output is written is
|
|
implementation-dependent, but is normally the same device to which X server
|
|
error messages are directed; thus the bits that can be set in <emphasis>
|
|
mask</emphasis>
|
|
and <emphasis>
|
|
flags</emphasis>
|
|
is implementation-specific. To turn on a debug output selection, set the bit
|
|
for the output in the <emphasis>
|
|
mask</emphasis>
|
|
parameter and set the corresponding bit in the <emphasis>
|
|
flags</emphasis>
|
|
parameter. To turn off event selection for an event, set the bit for the
|
|
output in the <emphasis>
|
|
mask</emphasis>
|
|
parameter and do not set the corresponding bit in the <emphasis>
|
|
flags</emphasis>
|
|
parameter.
|
|
</para>
|
|
|
|
|
|
<para>
|
|
When bits are set in the debug controls masks, <emphasis>
|
|
ctrls_mask</emphasis>
|
|
and <emphasis>
|
|
ctrls</emphasis>
|
|
, Xkb modifies its behavior according to each controls bit. <emphasis>
|
|
ctrls_mask</emphasis>
|
|
and <emphasis>
|
|
ctrls</emphasis>
|
|
are related in the same way that <emphasis>
|
|
mask</emphasis>
|
|
and <emphasis>
|
|
flags</emphasis>
|
|
are. The valid controls bits are defined in Table 22.1.
|
|
</para>
|
|
|
|
<table frame='topbot'>
|
|
<title>Debug Control Masks</title>
|
|
<?dbfo keep-together="always" ?>
|
|
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
<colspec colname='c1' colwidth='1.5*'/>
|
|
<colspec colname='c2' colwidth='1.0*'/>
|
|
<colspec colname='c3' colwidth='2.0*'/>
|
|
<thead>
|
|
<row rowsep='1'>
|
|
<entry>Debug Control Mask</entry>
|
|
<entry>Value</entry>
|
|
<entry>Meaning</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>XkbDF_DisableLocks</entry>
|
|
<entry>(1 << 0)</entry>
|
|
<entry>Disable actions that lock modifiers</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
<emphasis>
|
|
XkbSetDebuggingFlags</emphasis>
|
|
returns <emphasis>
|
|
True</emphasis>
|
|
if successful and <emphasis>
|
|
False</emphasis>
|
|
otherwise. The only protocol error it may generate is <emphasis>
|
|
BadAlloc</emphasis>
|
|
, if for some reason it is unable to allocate storage.
|
|
</para>
|
|
|
|
|
|
<para>
|
|
<emphasis>
|
|
XkbSetDebuggingFlags</emphasis>
|
|
is intended for developer use and may be disabled in production X servers. If
|
|
it is disabled, <emphasis>
|
|
XkbSetDebuggingFlags</emphasis>
|
|
has no effect and does not generate any protocol errors.
|
|
</para>
|
|
|
|
|
|
<para>
|
|
The message in <emphasis>
|
|
msg</emphasis>
|
|
is written immediately. The device to which it is written is implementation
|
|
dependent but is normally the same device where X server error messages are
|
|
directed.
|
|
</para>
|
|
</chapter>
|