/*******************************************************************************
* Copyright (c) 2000, 2006 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.mi.core.command;
import org.eclipse.cdt.debug.mi.core.MIException;
import org.eclipse.cdt.debug.mi.core.output.MIInfo;
import org.eclipse.cdt.debug.mi.core.output.MIOutput;
import org.eclipse.cdt.debug.mi.core.output.MIStackListFramesInfo;
/**
*
* -stack-list-frames [ LOW-FRAME HIGH-FRAME ]
*
* List the frames currently on the stack. For each frame it displays
* the following info:
*
* `LEVEL'
* The frame number, 0 being the topmost frame, i.e. the innermost
* function.
*
* `ADDR'
* The `$pc' value for that frame.
*
* `FUNC'
* Function name.
*
* `FILE'
* File name of the source file where the function lives.
*
* `FULLNAME'
* Absolute file name of the source file where the function lives.
* @since gdb 6.4
*
* `LINE'
* Line number corresponding to the `$pc'.
*
* If invoked without arguments, this command prints a backtrace for the
* whole stack. If given two integer arguments, it shows the frames whose
* levels are between the two arguments (inclusive). If the two arguments
* are equal, it shows the single frame at the corresponding level.
*
*/
public class MIStackListFrames extends MICommand
{
public MIStackListFrames(String miVersion) {
super(miVersion, "-stack-list-frames"); //$NON-NLS-1$
}
public MIStackListFrames(String miVersion, int low, int high) {
super(miVersion, "-stack-list-frames", new String[]{Integer.toString(low), //$NON-NLS-1$
Integer.toString(high)});
}
public MIStackListFramesInfo getMIStackListFramesInfo() throws MIException {
return (MIStackListFramesInfo)getMIInfo();
}
public MIInfo getMIInfo() throws MIException {
MIInfo info = null;
MIOutput out = getMIOutput();
if (out != null) {
info = new MIStackListFramesInfo(out);
if (info.isError()) {
throwMIException(info, out);
}
}
return info;
}
}