def add_finding(self, state, address, pc, finding, at_init, constraint=True):
if issymbolic(pc):<EOL><INDENT>pc = simplify(pc)<EOL><DEDENT>if isinstance(pc, Constant):<EOL><INDENT>pc = pc.value<EOL><DEDENT>if not isinstance(pc, int):<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>self.get_findings(state).add((address, pc, finding, at_init, constraint))<EOL>with self.locked_global_findings() as gf:<EOL><INDENT>gf.add((address, pc, finding, at_init))<EOL><DEDENT>logger.warning(finding)<EOL>
Logs a finding at specified contract and assembler line.
:param state: current state
:param address: contract address of the finding
:param pc: program counter of the finding
:param at_init: true if executing the constructor
:param finding: textual description of the finding
:param constraint: finding is considered reproducible only when constraint is True