Package org.erlide.backend.debug.events

Source Code of org.erlide.backend.debug.events.BreakAtEvent

package org.erlide.backend.debug.events;

import org.eclipse.debug.core.DebugEvent;
import org.erlide.backend.debug.model.ErlangDebugTarget;
import org.erlide.backend.debug.model.ErlangProcess;
import org.erlide.util.ErlLogger;

import com.ericsson.otp.erlang.OtpErlangObject;
import com.ericsson.otp.erlang.OtpErlangPid;

public class BreakAtEvent extends MetaEvent {

    private final String module;
    private final int line;

    public BreakAtEvent(final OtpErlangPid pid, final String module, final int line,
            final OtpErlangObject le) {
        super(pid, null);
        this.module = module;
        this.line = line;
    }

    @Override
    public void execute(final ErlangDebugTarget debugTarget) {
        if (module == null || line == -1) {
            ErlLogger.debug("can't do anything with no module/line defined");
            return;
        }

        final ErlangProcess erlangProcess = debugTarget
                .getOrCreateErlangProcess(getPid(debugTarget));
        // FIXME can't get stack in wait...
        // should be possible according to dbg_ui_trace_win....
        erlangProcess.getStackAndBindings(module, line);
        if (erlangProcess.isStepping()) {
            erlangProcess.fireSuspendEvent(DebugEvent.STEP_END);
        } else {
            erlangProcess.fireSuspendEvent(DebugEvent.BREAKPOINT);
        }
        erlangProcess.setNotStepping();
    }

    public String getModule() {
        return module;
    }

    public int getLine() {
        return line;
    }

}
TOP

Related Classes of org.erlide.backend.debug.events.BreakAtEvent

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.