diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index faa88ef6db2..2f408a9950c 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,7 @@ +2003-04-25 Mikhail Khodjaiants + Fix for bug 36909 + * DisassemblyManager.java: check if the address of a stack frame is not 0; + 2003-04-23 Mikhail Khodjaiants Check for null pointer in 'isCharacter' and 'isCharPointer'. * CValue.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java index b9a820cfac8..7c969e62123 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java @@ -208,13 +208,14 @@ public class CStackFrame extends CDebugElement { ICDILocation location = getCDIStackFrame().getLocation(); String name = new String(); - if ( location.getFunction() != null ) + if ( location.getFunction() != null && location.getFunction().trim().length() > 0 ) name += location.getFunction() + "() "; - if ( location.getFile() != null ) + if ( location.getFile() != null && location.getFile().trim().length() > 0 ) + { name += "at " + location.getFile() + ":" ; - if ( location.getLineNumber() != 0 ) - name += location.getLineNumber(); - + if ( location.getLineNumber() != 0 ) + name += location.getLineNumber(); + } return name.toString(); } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/DisassemblyManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/DisassemblyManager.java index 017cd176848..857ab487034 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/DisassemblyManager.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/DisassemblyManager.java @@ -102,14 +102,17 @@ public class DisassemblyManager if ( frameInfo != null ) { long address = frameInfo.getAddress(); - if ( getDisassemblyStorage() != null && getDisassemblyStorage().containsAddress( address ) ) + if ( address != 0 ) { - storage = getDisassemblyStorage(); + if ( getDisassemblyStorage() != null && getDisassemblyStorage().containsAddress( address ) ) + { + storage = getDisassemblyStorage(); + } + else + { + storage = loadDisassemblyStorage( frameInfo ); + } } - else - { - storage = loadDisassemblyStorage( frameInfo ); - } } return storage; } diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog index 10e6fa2a26a..ff8ea83ce77 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog @@ -1,3 +1,9 @@ +2003-04-25 Mikhail Khodjaiants + Fix for bug 36909. + * MIFrame.java: + gdb returns "??" as a function name if symbols are not available. + Set the function name in this case to ""; + 2003-04-24 Alain Magloire * src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java (createMIInfoProgram): diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java index 5c1a4474a8c..1ecc62658e9 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java @@ -84,7 +84,7 @@ public class MIFrame { } catch (NumberFormatException e) { } } else if (var.equals("func")) { - func = str; + func = ( str != null && str.indexOf( "??" ) != -1 ) ? "" : str; } else if (var.equals("file")) { file = str; } else if (var.equals("line")) { diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index e141acd1252..24958c4970b 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,9 @@ +2003-04-25 Mikhail Khodjaiants + Fix for bug 36909. + * NoSymbolOrSourceElement.java: new file. + * CDTDebugModelPresentation.java + * CUISourceLocator.java + 2003-04-24 Mikhail Khodjaiants Display error messages in the 'Registers' view. * RegistersView.java diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java index ed54382b16a..d55f7dbf396 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java @@ -457,17 +457,22 @@ public class CDTDebugModelPresentation extends LabelProvider { String label = new String(); label += info.getLevel() + " "; - if ( info.getFunction() != null ) - label += info.getFunction() + "() "; - - if ( info.getFile() != null ) + if ( info.getFunction() != null && info.getFunction().trim().length() > 0 ) { - IPath path = new Path( info.getFile() ); - if ( !path.isEmpty() ) - label += "at " + ( qualified ? path.toOSString() : path.lastSegment() ) + ":"; + label += info.getFunction() + "() "; + if ( info.getFile() != null ) + { + IPath path = new Path( info.getFile() ); + if ( !path.isEmpty() ) + { + label += "at " + ( qualified ? path.toOSString() : path.lastSegment() ) + ":"; + if ( info.getFrameLineNumber() != 0 ) + label += info.getFrameLineNumber(); + } + } } - if ( info.getFrameLineNumber() != 0 ) - label += info.getFrameLineNumber(); + else + label += ""; return label; } IDummyStackFrame dummy = (IDummyStackFrame)stackFrame.getAdapter( IDummyStackFrame.class ); diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/NoSymbolOrSourceElement.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/NoSymbolOrSourceElement.java new file mode 100644 index 00000000000..ff8d42a009d --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/NoSymbolOrSourceElement.java @@ -0,0 +1,29 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ + +package org.eclipse.cdt.debug.internal.ui.editors; + +import org.eclipse.debug.core.model.IStackFrame; + +/** + * Enter type comment. + * + * @since Apr 25, 2003 + */ +public class NoSymbolOrSourceElement +{ + private IStackFrame fStackFrame; + + public NoSymbolOrSourceElement( IStackFrame frame ) + { + fStackFrame = frame; + } + + public IStackFrame getStackFrame() + { + return fStackFrame; + } +} diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/CUISourceLocator.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/CUISourceLocator.java index a4c8e566b49..158f970113d 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/CUISourceLocator.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/sourcelookup/CUISourceLocator.java @@ -11,6 +11,7 @@ import org.eclipse.cdt.debug.core.sourcelookup.ISourceMode; import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceLocator; import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceManager; import org.eclipse.cdt.debug.internal.ui.editors.FileNotFoundElement; +import org.eclipse.cdt.debug.internal.ui.editors.NoSymbolOrSourceElement; import org.eclipse.cdt.debug.internal.ui.wizards.AddDirectorySourceLocationWizard; import org.eclipse.cdt.debug.internal.ui.wizards.AddSourceLocationWizard; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; @@ -77,6 +78,10 @@ public class CUISourceLocator implements IAdaptable { res = new FileNotFoundElement( stackFrame ); } + else // don't show in editor + { + res = new NoSymbolOrSourceElement( stackFrame ); + } } return res; }