diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index e74bf76678f..cd7f3dd2e4c 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,7 @@ +2002-10-10 Mikhail Khodjaiants + * CDebugTarget.java: Implementing the disassembly mode. + * CThread.java: Implementing the disassembly mode. + 2002-10-10 Mikhail Khodjaiants * CSourceManager.java: Implementing the disassembly mode. * DisassemblyManager.java: Implementing the disassembly mode. diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java index 74b9726201b..5aeba7b72e4 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java @@ -58,6 +58,7 @@ import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceManager; import org.eclipse.cdt.debug.internal.core.sourcelookup.DisassemblyManager; import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation; import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator; +import org.eclipse.cdt.debug.core.sourcelookup.ISourceMode; import org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint; import org.eclipse.core.resources.IMarkerDelta; import org.eclipse.core.resources.IProject; @@ -1861,4 +1862,14 @@ public class CDebugTarget extends CDebugElement { return ( getTargetType() == ICDebugTargetType.TARGET_TYPE_LOCAL_CORE_DUMP ); } + + protected int getRealSourceMode() + { + ISourceLocator sl = getSourceLocator(); + if ( sl != null && sl instanceof CSourceManager ) + { + return ((CSourceManager)sl).getRealMode(); + } + return ISourceMode.MODE_SOURCE; + } } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java index ddb3090bdd5..9de18d0dbb3 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java @@ -32,6 +32,7 @@ import org.eclipse.cdt.debug.core.cdi.model.ICDIObject; import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame; import org.eclipse.cdt.debug.core.cdi.model.ICDITarget; import org.eclipse.cdt.debug.core.cdi.model.ICDIThread; +import org.eclipse.cdt.debug.core.sourcelookup.ISourceMode; import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.model.IBreakpoint; @@ -543,7 +544,14 @@ public class CThread extends CDebugElement return; try { - getCDIThread().stepInto(); + if ( getRealSourceMode() == ISourceMode.MODE_SOURCE ) + { + getCDIThread().stepInto(); + } + else + { + getCDIThread().stepIntoInstruction(); + } } catch( CDIException e ) { @@ -560,7 +568,14 @@ public class CThread extends CDebugElement return; try { - getCDIThread().stepOver(); + if ( getRealSourceMode() == ISourceMode.MODE_SOURCE ) + { + getCDIThread().stepOver(); + } + else + { + getCDIThread().stepOverInstruction(); + } } catch( CDIException e ) { @@ -973,4 +988,9 @@ public class CThread extends CDebugElement targetRequestFailed( e.getMessage(), null ); } } + + private int getRealSourceMode() + { + return ((CDebugTarget)getDebugTarget()).getRealSourceMode(); + } }