1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-19 23:15:24 +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:
Mikhail Khodjaiants 2006-04-12 17:27:28 +00:00
parent c394f40e48
commit f5d55039c7
8 changed files with 30 additions and 10 deletions

View file

@ -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
Bug 119740: allow to specify only a subset of shared objects that we want symbols to be loaded for.
* SharedLibraryManager.java

View file

@ -649,7 +649,7 @@ public class BreakpointManager extends Manager {
}
Session session = (Session)target.getSession();
SharedLibraryManager sharedMgr = session.getSharedLibraryManager();
if (sharedMgr.isDeferredBreakpoint()) {
if (sharedMgr.isDeferredBreakpoint(target)) {
List dList = (List)deferredMap.get(target);
if (dList == null) {
dList = Collections.synchronizedList(new ArrayList());

View file

@ -371,7 +371,7 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs
Target currentTarget = session.getTarget(miSession);
SharedLibraryManager mgr = session.getSharedLibraryManager();
if (mgr.isDeferredBreakpoint()) {
if (mgr.isDeferredBreakpoint(currentTarget)) {
if (stopped instanceof MISharedLibEvent) {
// Check if we have a new library loaded
try {

View file

@ -235,12 +235,12 @@ public class SharedLibraryManager extends Manager {
return null;
}
public void setDeferredBreakpoint (boolean set) {
isDeferred = set;
public void setDeferredBreakpoint(Target target, boolean set) {
target.deferBreakpoints( set );
}
public boolean isDeferredBreakpoint() {
return isDeferred;
public boolean isDeferredBreakpoint(Target target) {
return target.areBreakpointsDeferred();
}
public void setAutoLoadSymbols(Target target, boolean set) throws CDIException {

View file

@ -95,6 +95,7 @@ public class Target extends SessionObject implements ICDITarget {
int currentThreadId;
String fEndian = null;
boolean suspended = true;
boolean deferBreakpoints = true;
public Target(Session s, MISession mi) {
super(s);
@ -1123,5 +1124,11 @@ public class Target extends SessionObject implements ICDITarget {
return null;
}
public void deferBreakpoints( boolean defer ) {
this.deferBreakpoints = defer;
}
public boolean areBreakpointsDeferred() {
return this.deferBreakpoints;
}
}

View file

@ -211,8 +211,8 @@ public class GDBCDIDebugger implements ICDIDebugger {
// If the user explicitly set stopOnSolibEvents well it probably
// means that they wanted to see those events so do no do deferred breakpoints.
if (autolib && !stopOnSolibEvents) {
sharedMgr.setDeferredBreakpoint(true);
sharedMgr.setStopOnSolibEvents(target, true);
sharedMgr.setDeferredBreakpoint(target, true);
}
} catch (CDIException e) {
// Ignore this error

View file

@ -195,7 +195,7 @@ public class GDBCDIDebugger2 extends AbstractGDBCDIDebugger {
try {
sharedMgr.setAutoLoadSymbols( target, autolib );
sharedMgr.setStopOnSolibEvents( target, stopOnSolibEvents );
sharedMgr.setDeferredBreakpoint( false );
sharedMgr.setDeferredBreakpoint( target, false );
// The idea is that if the user set autolib, by default
// we provide with the capability of deferred breakpoints
// 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
// means that they wanted to see those events so do no do deferred breakpoints.
if ( autolib && !stopOnSolibEvents ) {
sharedMgr.setDeferredBreakpoint( true );
sharedMgr.setStopOnSolibEvents( target, true );
sharedMgr.setDeferredBreakpoint( target, true );
}
}
catch( CDIException e ) {
@ -224,6 +224,8 @@ public class GDBCDIDebugger2 extends AbstractGDBCDIDebugger {
for ( int j = 0; j < autoSolibs.length; ++j )
libs.add( new File( autoSolibs[j].getName() ) );
sharedMgr.autoLoadSymbols( (File[])libs.toArray( new File[libs.size()] ) );
if ( !autolib && !stopOnSolibEvents )
sharedMgr.setDeferredBreakpoint( target, libs.size() > 0 );
}
}
catch( CDIException e ) {

View file

@ -49,8 +49,8 @@ public class GDBDebugger implements ICDebugger {
// If the user explicitly set stopOnSolibEvents well it probably
// means that they wanted to see those events so do no do deferred breakpoints.
if (autolib && !stopOnSolibEvents) {
mgr.setDeferredBreakpoint(true);
mgr.setStopOnSolibEvents(target, true);
mgr.setDeferredBreakpoint(target, true);
}
} catch (CDIException e) {
// Ignore this error