Module index

# Module `ida_problems`

Functions that deal with the list of problems.

There are several problem lists. An address may be inserted to any list. The kernel simply maintains these lists, no additional processing is done.

The problem lists are accessible for the user from the View->Subviews->Problems menu item.

Addresses in the lists are kept sorted. In general IDA just maintains these lists without using them during analysis (except PR_ROLLED).

## Global variables

`var PR_ATTN`

  Attention! Probably erroneous situation.

`var PR_BADSTACK`

  Failed to trace the value of the stack pointer.

`var PR_COLLISION`

  FLAIR collision: the function with the given name already exists.

`var PR_DECIMP`

  FLAIR match indecision: the patterns matched, but not the function(s) being referenced.

`var PR_DISASM`

  Can't disasm.

`var PR_END`

  Number of problem types.

`var PR_FINAL`

  Decision to convert to instruction/data is made by IDA.

`var PR_HEAD`

  Already head.

`var PR_ILLADDR`

  Exec flows beyond limits.

`var PR_JUMP`

  Jump by table !!!! ignored.

`var PR_MANYLINES`

  Too many lines.

`var PR_NOBASE`

  Can't find offset base.

`var PR_NOCMT`

  Can't find comment (not used anymore)

`var PR_NOFOP`

  Can't find forced op (not used anymore)

`var PR_NONAME`

  Can't find name.

`var PR_NOXREFS`

  Can't find references.

`var PR_ROLLED`

  The decision made by IDA was wrong and rolled back.

## Functions

`def forget_problem(type: problist_id_t, ea: ea_t)`

  forget_problem(type, ea) -> bool Remove an address from a problem list

  @param type: (C++: problist_id_t) problem list type @param ea: (C++: ea_t) linear address @return: success

`def get_problem(type: problist_id_t, lowea: ea_t)`

  get_problem(type, lowea) -> ea_t Get an address from the specified problem list. The address is not removed from the list.

  @param type: (C++: problist_id_t) problem list type @param lowea: (C++: ea_t) the returned address will be higher or equal than the specified address @return: linear address or BADADDR

`def get_problem_desc(t: problist_id_t, ea: ea_t)`

  get_problem_desc(t, ea) -> str Get the human-friendly description of the problem, if one was provided to remember_problem.

  @param t: (C++: problist_id_t) problem list type. @param ea: (C++: ea_t) linear address. @return: the message length or -1 if none

`def get_problem_name(type: problist_id_t, longname: bool = True)`

  get_problem_name(type, longname=True) -> char const Get problem list description.

  @param type: (C++: problist_id_t) @param longname: (C++: bool)

`def is_problem_present(t: problist_id_t, ea: ea_t)`

  is_problem_present(t, ea) -> bool Check if the specified address is present in the problem list.

  @param t: (C++: problist_id_t) @param ea: (C++: ea_t)

`def remember_problem(type: problist_id_t, ea: ea_t, msg: char const * = None)`

  remember_problem(type, ea, msg=None) Insert an address to a list of problems. Display a message saying about the problem (except of PR_ATTN,PR_FINAL) PR_JUMP is temporarily ignored.

  @param type: (C++: problist_id_t) problem list type @param ea: (C++: ea_t) linear address @param msg: (C++: const char *) a user-friendly message to be displayed instead of the default more generic one associated with the type of problem. Defaults to nullptr.

`def was_ida_decision(ea: ea_t)`

  was_ida_decision(ea) -> bool

  @param ea: ea_t