hi, thanks Jonah for your support, now I can run the command and trigger refreshing views using flushAllCachesAndRefresh. the stack frame view is refreshing properly and the stack frame corresponding to the selected record is displayed properly, but the source code view is not following: the source code is not highlighting the line that matches the selected record (see the following picture). Is there any special action needed for refreshing the source code view in debug perspective? Kind Regards Zied Guermazi Am 2022-05-24 19:48, schrieb Jonah Graham:
@cdt-devers if anyone else has some ideas in this area please share them here. Zied's been doing lots of work on GDB in areas that are probably of lots of value to many CDT adopters so let's see if we can support them in getting these improvements integrated into CDT! Hi Zied, Please find some answers inline below. ~~~ Jonah Graham Kichwa Coders www.kichwacoders.com [1] On Tue, 17 May 2022 at 19:22, Zied Guermazi <zied.guermazi@xxxxxxxxx> wrote:
Hi, currently I am extending the cdt-dsf to implement the gdb commands for handling instructions and functions call histories, and parsing and getting their outputs. I added two buttons and two basic views (see orange indications in following picture). and I can successfully display the instructions and functions calls histories when the user clicks on the buttons in the menu bar. now I would like to add actions so that when the user clicks on a line in the function call history list, a command is issued to gdb, get executed, and then the editor goes to the related line in the source code (similar to what happens when the user selects a stack frame in the debug view, or when the program halts in a breakpoint) I added a class: public class FunctionsCallHistoryView extends AbstractDebugView implements IViewerUpdateListener, IDebugContextListener, IModelChangedListener and registered a DoubleClickListener, public void doubleClick(DoubleClickEvent event) where I am identifying the clicked line extracting the record number and calling _// execute record goto record command_ _ GdbGoToRecordCommand cmd = new GdbGoToRecordCommand(fFunctionsCallHistoryModel.getSession());_ _cmd.setRecordNumber(__recordNumber);_ _cmd.execute(null); //how to prepare a IDebugCommandRequest request ?_ I have two issues with this implementation: - how to prepare a IDebugCommandRequest request object?
I don't think you want to use IDebugCommandRequest - one of the tricky parts of DSF is that it is very different than Eclipse standard debug model. The DSF Tutorial [2] tries to introduce the concepts here (there is a warning "Flexible Hierarchy is still a provisional API in Eclipse Platform 3.4." technically still true but the API hasn't changed in years). I also did a tutorial session [3] many years ago that may be useful for background.
- Ideally this shall be executed asynchronously to the UI, is there a mean to achieve it?
All of DSF is very asynchronous by design and all operations run in non-UI thread. As long as you don't wait for results in the UI thread on non-UI thread you get such async behaviour. A good model for your work may be TraceControlView. Specifically you can look at command with ID org.eclipse.cdt.dsf.gdb.ui.command.selectNextTraceRecord and how it is called from TraceControlView (see org.eclipse.cdt.dsf.gdb.internal.ui.tracepoints.TraceControlView.createFrameLine(...).new SelectionAdapter() {...}.widgetSelected(SelectionEvent)) - the same command is also contributed to the toolbar of the view, search for toolbar:org.eclipse.cdt.dsf.gdb.ui.tracecontrol.view?after=additions in org.eclipse.cdt.dsf.gdb.ui/plugin.xml
On success, I would like a also to fire an event about the change done in the program counter so that the debug view and the source code refresh themself with the proper new PC, line of code and stack frame. is there any guidance/examples for achieving it? can you please support me here?
You can force a full refresh of all views with ICommandControlService.flushAllCachesAndRefresh(RequestMonitor) - or you can issue more narrow refreshes if you know which services have data changes. I hope that is a good start for you Jonah
Kind Regards Zied Guermazi _______________________________________________ cdt-dev mailing list cdt-dev@xxxxxxxxxxx To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/cdt-dev
Links: ------ [1] http://www.kichwacoders.com [2] https://help.eclipse.org/latest/topic/org.eclipse.cdt.doc.isv/guide/dsf/intro/dsf_programming_intro.html?cp=13_0_6 [3] https://github.com/jonahgraham/cdt-examples _______________________________________________ cdt-dev mailing list cdt-dev@xxxxxxxxxxx To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/cdt-dev
--
Zied Guermazi founder Trande GmbH Leuschnerstraße 2 69469 Weinheim/Germany Mobile: +491722645127 mailto:zied.guermazi@xxxxxxxxx Trande GmbH Leuschnerstraße 2, D-69469 Weinheim; Telefon: +491722645127 Sitz der Gesellschaft: Weinheim- Registergericht: AG Mannheim HRB 736209 - Geschäftsführung: Zied Guermazi
Confidentiality Note This message is intended only for the use of the named recipient(s) and may contain confidential and/or privileged information. If you are not the intended recipient, please contact the sender and delete the message. Any unauthorized use of the information contained in this message is prohibited.
|