mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-21 16:05:25 +02:00
Bug 119740: allow to specify only a subset of shared objects that we want symbols to be loaded for. Support for deferred breakpoints.
This commit is contained in:
parent
c394f40e48
commit
f5d55039c7
8 changed files with 30 additions and 10 deletions
|
@ -1,3 +1,14 @@
|
||||||
|
2006-04-12 Mikhail Khodjaiants
|
||||||
|
Bug 119740: allow to specify only a subset of shared objects that we want symbols to be loaded for.
|
||||||
|
Support for deferred breakpoints.
|
||||||
|
* BreakpointManager.java
|
||||||
|
* EventManager.java
|
||||||
|
* SharedLibraryManager.java
|
||||||
|
* Target.java
|
||||||
|
* GDBCDIDebugger.java
|
||||||
|
* GDBCDIDebugger2.java
|
||||||
|
* GDBDebugger.java
|
||||||
|
|
||||||
2006-04-10 Mikhail Khodjaiants
|
2006-04-10 Mikhail Khodjaiants
|
||||||
Bug 119740: allow to specify only a subset of shared objects that we want symbols to be loaded for.
|
Bug 119740: allow to specify only a subset of shared objects that we want symbols to be loaded for.
|
||||||
* SharedLibraryManager.java
|
* SharedLibraryManager.java
|
||||||
|
|
|
@ -649,7 +649,7 @@ public class BreakpointManager extends Manager {
|
||||||
}
|
}
|
||||||
Session session = (Session)target.getSession();
|
Session session = (Session)target.getSession();
|
||||||
SharedLibraryManager sharedMgr = session.getSharedLibraryManager();
|
SharedLibraryManager sharedMgr = session.getSharedLibraryManager();
|
||||||
if (sharedMgr.isDeferredBreakpoint()) {
|
if (sharedMgr.isDeferredBreakpoint(target)) {
|
||||||
List dList = (List)deferredMap.get(target);
|
List dList = (List)deferredMap.get(target);
|
||||||
if (dList == null) {
|
if (dList == null) {
|
||||||
dList = Collections.synchronizedList(new ArrayList());
|
dList = Collections.synchronizedList(new ArrayList());
|
||||||
|
|
|
@ -371,7 +371,7 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs
|
||||||
Target currentTarget = session.getTarget(miSession);
|
Target currentTarget = session.getTarget(miSession);
|
||||||
SharedLibraryManager mgr = session.getSharedLibraryManager();
|
SharedLibraryManager mgr = session.getSharedLibraryManager();
|
||||||
|
|
||||||
if (mgr.isDeferredBreakpoint()) {
|
if (mgr.isDeferredBreakpoint(currentTarget)) {
|
||||||
if (stopped instanceof MISharedLibEvent) {
|
if (stopped instanceof MISharedLibEvent) {
|
||||||
// Check if we have a new library loaded
|
// Check if we have a new library loaded
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -235,12 +235,12 @@ public class SharedLibraryManager extends Manager {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDeferredBreakpoint (boolean set) {
|
public void setDeferredBreakpoint(Target target, boolean set) {
|
||||||
isDeferred = set;
|
target.deferBreakpoints( set );
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDeferredBreakpoint() {
|
public boolean isDeferredBreakpoint(Target target) {
|
||||||
return isDeferred;
|
return target.areBreakpointsDeferred();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAutoLoadSymbols(Target target, boolean set) throws CDIException {
|
public void setAutoLoadSymbols(Target target, boolean set) throws CDIException {
|
||||||
|
|
|
@ -95,6 +95,7 @@ public class Target extends SessionObject implements ICDITarget {
|
||||||
int currentThreadId;
|
int currentThreadId;
|
||||||
String fEndian = null;
|
String fEndian = null;
|
||||||
boolean suspended = true;
|
boolean suspended = true;
|
||||||
|
boolean deferBreakpoints = true;
|
||||||
|
|
||||||
public Target(Session s, MISession mi) {
|
public Target(Session s, MISession mi) {
|
||||||
super(s);
|
super(s);
|
||||||
|
@ -1123,5 +1124,11 @@ public class Target extends SessionObject implements ICDITarget {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deferBreakpoints( boolean defer ) {
|
||||||
|
this.deferBreakpoints = defer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean areBreakpointsDeferred() {
|
||||||
|
return this.deferBreakpoints;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,8 +211,8 @@ public class GDBCDIDebugger implements ICDIDebugger {
|
||||||
// If the user explicitly set stopOnSolibEvents well it probably
|
// If the user explicitly set stopOnSolibEvents well it probably
|
||||||
// means that they wanted to see those events so do no do deferred breakpoints.
|
// means that they wanted to see those events so do no do deferred breakpoints.
|
||||||
if (autolib && !stopOnSolibEvents) {
|
if (autolib && !stopOnSolibEvents) {
|
||||||
sharedMgr.setDeferredBreakpoint(true);
|
|
||||||
sharedMgr.setStopOnSolibEvents(target, true);
|
sharedMgr.setStopOnSolibEvents(target, true);
|
||||||
|
sharedMgr.setDeferredBreakpoint(target, true);
|
||||||
}
|
}
|
||||||
} catch (CDIException e) {
|
} catch (CDIException e) {
|
||||||
// Ignore this error
|
// Ignore this error
|
||||||
|
|
|
@ -195,7 +195,7 @@ public class GDBCDIDebugger2 extends AbstractGDBCDIDebugger {
|
||||||
try {
|
try {
|
||||||
sharedMgr.setAutoLoadSymbols( target, autolib );
|
sharedMgr.setAutoLoadSymbols( target, autolib );
|
||||||
sharedMgr.setStopOnSolibEvents( target, stopOnSolibEvents );
|
sharedMgr.setStopOnSolibEvents( target, stopOnSolibEvents );
|
||||||
sharedMgr.setDeferredBreakpoint( false );
|
sharedMgr.setDeferredBreakpoint( target, false );
|
||||||
// The idea is that if the user set autolib, by default
|
// The idea is that if the user set autolib, by default
|
||||||
// we provide with the capability of deferred breakpoints
|
// we provide with the capability of deferred breakpoints
|
||||||
// And we set setStopOnSolib events for them(but they should not see those things.
|
// And we set setStopOnSolib events for them(but they should not see those things.
|
||||||
|
@ -203,8 +203,8 @@ public class GDBCDIDebugger2 extends AbstractGDBCDIDebugger {
|
||||||
// If the user explicitly set stopOnSolibEvents well it probably
|
// If the user explicitly set stopOnSolibEvents well it probably
|
||||||
// means that they wanted to see those events so do no do deferred breakpoints.
|
// means that they wanted to see those events so do no do deferred breakpoints.
|
||||||
if ( autolib && !stopOnSolibEvents ) {
|
if ( autolib && !stopOnSolibEvents ) {
|
||||||
sharedMgr.setDeferredBreakpoint( true );
|
|
||||||
sharedMgr.setStopOnSolibEvents( target, true );
|
sharedMgr.setStopOnSolibEvents( target, true );
|
||||||
|
sharedMgr.setDeferredBreakpoint( target, true );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch( CDIException e ) {
|
catch( CDIException e ) {
|
||||||
|
@ -224,6 +224,8 @@ public class GDBCDIDebugger2 extends AbstractGDBCDIDebugger {
|
||||||
for ( int j = 0; j < autoSolibs.length; ++j )
|
for ( int j = 0; j < autoSolibs.length; ++j )
|
||||||
libs.add( new File( autoSolibs[j].getName() ) );
|
libs.add( new File( autoSolibs[j].getName() ) );
|
||||||
sharedMgr.autoLoadSymbols( (File[])libs.toArray( new File[libs.size()] ) );
|
sharedMgr.autoLoadSymbols( (File[])libs.toArray( new File[libs.size()] ) );
|
||||||
|
if ( !autolib && !stopOnSolibEvents )
|
||||||
|
sharedMgr.setDeferredBreakpoint( target, libs.size() > 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch( CDIException e ) {
|
catch( CDIException e ) {
|
||||||
|
|
|
@ -49,8 +49,8 @@ public class GDBDebugger implements ICDebugger {
|
||||||
// If the user explicitly set stopOnSolibEvents well it probably
|
// If the user explicitly set stopOnSolibEvents well it probably
|
||||||
// means that they wanted to see those events so do no do deferred breakpoints.
|
// means that they wanted to see those events so do no do deferred breakpoints.
|
||||||
if (autolib && !stopOnSolibEvents) {
|
if (autolib && !stopOnSolibEvents) {
|
||||||
mgr.setDeferredBreakpoint(true);
|
|
||||||
mgr.setStopOnSolibEvents(target, true);
|
mgr.setStopOnSolibEvents(target, true);
|
||||||
|
mgr.setDeferredBreakpoint(target, true);
|
||||||
}
|
}
|
||||||
} catch (CDIException e) {
|
} catch (CDIException e) {
|
||||||
// Ignore this error
|
// Ignore this error
|
||||||
|
|
Loading…
Add table
Reference in a new issue