# Debugging
[MISC API]

Support for m17n library users to debug their programs. More...

## Functions
MCharTable * | mdebug_dump_chartab (MCharTable *table, int indent)
| Dump a chartable.
MFace * | mdebug_dump_face (MFace *face, int indent)
| Dump a face.
MFont * | mdebug_dump_font (MFont *font)
| Dump a font.
MFontset * | mdebug_dump_fontset (MFontset *fontset, int indent)
| Dump a fontset.
MInputMethod * | mdebug_dump_im (MInputMethod *im, int indent)
| Dump an input method.
int | mdebug_hook ()
| Hook function called on an error.
MText * | mdebug_dump_mtext (MText *mt, int indent, int fullp)
| Dump an M-text.
MPlist * | mdebug_dump_plist (MPlist *plist, int indent)
| Dump a property list.
MSymbol | mdebug_dump_symbol (MSymbol symbol, int indent)
| Dump a symbol.
MSymbol | mdebug_dump_all_symbols (int indent)
| Dump all symbol names.

## Detailed Description

Support for m17n library users to debug their programs.

The m17n library provides the following facilities to support the library users to debug their programs.

- Environment variables to control printing of various information.

  - MDEBUG_INIT -- If set to 1, print information about the library initialization on the call of M17N_INIT().

  - MDEBUG_FINI -- If set to 1, print counts of objects that are not yet freed on the call of M17N_FINI().

  - MDEBUG_CHARSET -- If set to 1, print information about charsets being loaded from the m17n database.

  - MDEBUG_CODING -- If set to 1, print information about coding systems being loaded from the m17n database.

  - MDEBUG_DATABASE -- If set to 1, print information about data being loaded from the m17n database.

  - MDEBUG_FONT -- If set to 1, print information about fonts being selected and opened.

  - MDEBUG_FLT -- If set to 1, 2, or 3, print information about which command of Font Layout Table are being executed. The bigger number prints the more detailed information.

  - MDEBUG_INPUT -- If set to 1, print information about how an input method is running.

  - MDEBUG_ALL -- Setting this variable to 1 is equivalent to setting all the above variables to 1.

- Functions to print various objects in a human readable way. See the documentation of mdebug_dump_XXXX() functions.

- The hook function called on an error. See the documentation of mdebug_hook().

## Function Documentation

MCharTable* mdebug_dump_chartab | ( | MCharTable * | table,
|  | int | indent |
| ) |  |  |

Dump a chartable.

The mdebug_dump_chartab() function prints a chartable table in a human readable way to the stderr. indent specifies how many columns to indent the lines but the first one.

Return value:
  This function returns table.

MFace* mdebug_dump_face | ( | MFace * | face,
|  | int | indent |
| ) |  |  |

Dump a face.

The mdebug_dump_face() function prints face face in a human readable way to the stderr. indent specifies how many columns to indent the lines but the first one.

Return value:
  This function returns face.

MFont* mdebug_dump_font | ( | MFont * | font | ) |

Dump a font.

The mdebug_dump_font() function prints font font in a human readable way to the stderr.

Return value:
  This function returns font.

MFontset* mdebug_dump_fontset | ( | MFontset * | fontset,
|  | int | indent |
| ) |  |  |

Dump a fontset.

The mdebug_dump_fontset() function prints fontset fontset in a human readable way to the stderr. indent specifies how many columns to indent the lines but the first one.

Return value:
  This function returns fontset.

MInputMethod* mdebug_dump_im | ( | MInputMethod * | im,
|  | int | indent |
| ) |  |  |

Dump an input method.

The mdebug_dump_im() function prints the input method im in a human readable way to the stderr. indent specifies how many columns to indent the lines but the first one.

Return value:
  This function returns im.

int mdebug_hook | ( | void |  | ) |

Hook function called on an error.

The mdebug_hook() function is called when an error happens. It returns -1 without doing anything. It is useful to set a break point on this function in a debugger.

MText* mdebug_dump_mtext | ( | MText * | mt,
|  | int | indent,
|  | int | fullp |
| ) |  |  |

Dump an M-text.

The mdebug_dump_mtext() function prints the M-text mt in a human readable way to the stderr. indent specifies how many columns to indent the lines but the first one. If fullp is zero, this function prints only a character code sequence. Otherwise, it prints the internal byte sequence and text properties as well.

Return value:
  This function returns mt.

MPlist* mdebug_dump_plist | ( | MPlist * | plist,
|  | int | indent |
| ) |  |  |

Dump a property list.

The mdebug_dump_plist() function prints a property list plist in a human readable way to the stderr. indent specifies how many columns to indent the lines but the first one.

Return value:
  This function returns plist.

MSymbol mdebug_dump_symbol | ( | MSymbol | symbol,
|  | int | indent |
| ) |  |  |

Dump a symbol.

The mdebug_dump_symbol() function prints symbol symbol in a human readable way to the stderr. indent specifies how many columns to indent the lines but the first one.

Return value:
  This function returns symbol.

Errors:
  MERROR_DEBUG

MSymbol mdebug_dump_all_symbols | ( | int | indent | ) |

Dump all symbol names.

The mdebug_dump_all_symbols() function prints names of all symbols to the stderr. indent specifies how many columns to indent the lines but the first one.

Return value:
  This function returns Mnil.

Errors:
  MERROR_DEBUG