mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 230434
When stepping a stack frame that is not the top level, GDB switches to the top level frame first. Therefore, when we get a stopped event, we are not sure what the frame is, in GDB, so we should reset it internally.
This commit is contained in:
parent
b6e4d9c3cf
commit
0a3dfda3fd
2 changed files with 7 additions and 1 deletions
|
@ -738,4 +738,9 @@ public abstract class AbstractMIControl extends AbstractDsfService
|
||||||
public void resetCurrentThreadLevel(){
|
public void resetCurrentThreadLevel(){
|
||||||
fCurrentThreadId = -1;
|
fCurrentThreadId = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void resetCurrentStackLevel(){
|
||||||
|
fCurrentStackLevel = -1;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,9 +108,10 @@ public class MIRunControlEventProcessor
|
||||||
// Change of state.
|
// Change of state.
|
||||||
String state = exec.getAsyncClass();
|
String state = exec.getAsyncClass();
|
||||||
if ("stopped".equals(state)) { //$NON-NLS-1$
|
if ("stopped".equals(state)) { //$NON-NLS-1$
|
||||||
// Re-set the thread level to -1 when stopped event is recvd.
|
// Re-set the thread and stack level to -1 when stopped event is recvd.
|
||||||
// This is to synchronize the state between GDB back-end and AbstractMIControl.
|
// This is to synchronize the state between GDB back-end and AbstractMIControl.
|
||||||
fCommandControl.resetCurrentThreadLevel();
|
fCommandControl.resetCurrentThreadLevel();
|
||||||
|
fCommandControl.resetCurrentStackLevel();
|
||||||
|
|
||||||
List<MIEvent<?>> events = new LinkedList<MIEvent<?>>();
|
List<MIEvent<?>> events = new LinkedList<MIEvent<?>>();
|
||||||
MIResult[] results = exec.getMIResults();
|
MIResult[] results = exec.getMIResults();
|
||||||
|
|
Loading…
Add table
Reference in a new issue