• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download

HANDLE_OPCODE(OP_BREAKPOINT)1 HANDLE_OPCODE(OP_BREAKPOINT)
2     {
3         /*
4          * Restart this instruction with the original opcode.  We do
5          * this by simply jumping to the handler.
6          *
7          * It's probably not necessary to update "inst", but we do it
8          * for the sake of anything that needs to do disambiguation in a
9          * common handler with INST_INST.
10          *
11          * The breakpoint itself is handled over in updateDebugger(),
12          * because we need to detect other events (method entry, single
13          * step) and report them in the same event packet, and we're not
14          * yet handling those through breakpoint instructions.  By the
15          * time we get here, the breakpoint has already been handled and
16          * the thread resumed.
17          */
18         u1 originalOpcode = dvmGetOriginalOpcode(pc);
19         ALOGV("+++ break 0x%02x (0x%04x -> 0x%04x)", originalOpcode, inst,
20             INST_REPLACE_OP(inst, originalOpcode));
21         inst = INST_REPLACE_OP(inst, originalOpcode);
22         FINISH_BKPT(originalOpcode);
23     }
24 OP_END
25