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:
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
|
||||
Bug 119740: allow to specify only a subset of shared objects that we want symbols to be loaded for.
|
||||
* SharedLibraryManager.java
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ) {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue