From a9eae1b09a8d64a4ce5bbeda1ccc0566e4063197 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Tue, 14 Jan 2003 20:26:28 +0000 Subject: [PATCH] Added the 'Add Address Breakpoint' action to the workbench 'Run' menu. --- debug/org.eclipse.cdt.debug.ui/ChangeLog | 9 +- .../icons/full/obj16/brkp_obj.gif | Bin 0 -> 140 bytes .../plugin.properties | 1 + debug/org.eclipse.cdt.debug.ui/plugin.xml | 30 ++++- .../AddAddressBreakpointActionDelegate.java | 118 ++++++++++++++++++ 5 files changed, 151 insertions(+), 7 deletions(-) create mode 100644 debug/org.eclipse.cdt.debug.ui/icons/full/obj16/brkp_obj.gif create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/AddAddressBreakpointActionDelegate.java diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 470ffa02bec..b627a52eb0b 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,4 +1,11 @@ -2003-01-10 Mikhail Khodjaiants +2003-01-14 Mikhail Khodjaiants + Added the 'Add Address Breakpoint' action to the workbench 'Run' menu. + * AddAddressBreakpointActionDelegate.java + * plugin.properties + * plugin.xml + * icons/full/obj16/brkp_obj.gif + +2003-01-13 Mikhail Khodjaiants Implementation of the 'Run To Line' action for disassembly. * RunToLineActionDelegate.java diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/brkp_obj.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/brkp_obj.gif new file mode 100644 index 0000000000000000000000000000000000000000..06d007905b264182beffbb389d5b836f58f0a74d GIT binary patch literal 140 zcmZ?wbhEHb6krfw*!-X2z<~qy_VEiAEU}NTx38aXKYzdd{{8j)_us$2|NsC0`}gl> zKn03FSr|bgIv@gMh69VGzzNT6-=kBUJUp&V=}GpOxO8P3XOhgV1r1?~cVG literal 0 HcmV?d00001 diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties index f7a72711b3e..fc9d8a8c41e 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.properties +++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties @@ -33,6 +33,7 @@ ManageBreakpointAction.label=Add/Remove C/C++ Brea&kpoint BreakpointPropertiesAction.label=P&roperties... ManageWatchpointAction.label=Add C/C++ &Watchpoint... AddExpressionAction.label=Add C/C++ &Expression... +AddAddressBreakpointAction.label=Add &Address Breakpoint... RunToLineAction.label=Run To C/C++ &Line ShowFullPathsAction.label=Show Full Paths ShowFullPathsAction.tooltip=Show Full Paths diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml index f2fa8828d1c..81650fb8488 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.xml +++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml @@ -146,7 +146,7 @@ + + + + + + + value="activated" + id="org.eclipse.cdt.debug.ui"> @@ -827,6 +842,9 @@ + + 0 ) ? null : "Address can not be 0."; + } + } + + /** + * @see org.eclipse.cdt.debug.internal.ui.actions.AbstractDebugActionDelegate#doAction(Object) + */ + protected void doAction( Object element ) throws DebugException + { + InputDialog dialog = new InputDialog( getPage().getWorkbenchWindow().getShell(), + "Add Address Breakpoint", + "Enter address:", + null, + new AddressValidator() ); + if ( dialog.open() == dialog.OK ) + { + CDebugModel.createAddressBreakpoint( ((IExecFileInfo)getDebugTarget( element ).getAdapter( IExecFileInfo.class )).getExecFile(), + -1, + parseValue( dialog.getValue().trim() ), + true, + 0, + "", + true ); + } + } + + /** + * @see org.eclipse.cdt.debug.internal.ui.actions.AbstractDebugActionDelegate#isEnabledFor(Object) + */ + protected boolean isEnabledFor( Object element ) + { + if ( element != null && element instanceof IDebugElement ) + { + IDebugTarget target = getDebugTarget( element ); + return ( target != null && !target.isTerminated() && target.getAdapter( IExecFileInfo.class ) != null ); + } + return false; + } + + protected long parseValue( String text ) throws NumberFormatException + { + long value = 0; + if ( text.trim().startsWith( "0x" ) ) + { + value = Integer.parseInt( text.substring( 2 ), 16 ); + } + else + { + value = Integer.parseInt( text ); + } + return value; + } + + private IDebugTarget getDebugTarget( Object element ) + { + if ( element != null && element instanceof IDebugElement ) + { + return ((IDebugElement)element).getDebugTarget(); + } + return null; + } +}