Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[platform-debug-dev] Blank memory monitor pane problem

Hi all, 

I've been banging my head against the wall on this one for much longer
than is healthy for anyone to be banging their head up against a wall. 


Background...

Our Eclipse-based IDE persists open memory view monitors and renderings
in the launch configuration when it terminates a debug session so it can
open them up again when the configuration is next relaunched. 


How it works...

To repopulate the memory view at launch, the debug target constructor
creates and adds any stored memory blocks to the memory block manager,
then via a status handler, it calls our UI plugin to add the renderings.


Here's the problem... 

If the memory view is visible and program halts due to a breakpoint
after it is launched, the monitor pane in the memory view is completely
blank. As soon as you select a debug element (stack frame, thread,
register, etc.) the monitor reappears.


What I understand to be happening... 

It seems that when the launch code adds the memory renderings, they
receive the focus in the IDE. When the breakpoint suspends the program,
and the stack frame is selected, the monitor pane does not receive any
notification of the selection change because one of the new renderings
has the focus instead of the debug view. 


What I've tried so far... 

1. Storing the workbench window's active part before adding the
renderings, then reactivating it afterwards. There is a problem with
this strategy, of course. If the memory view is the active part before
adding the renderings, nothing will change with the activation.
Curiously, the active part always came back as the memory view, anyway. 

2. Just make the debug view the active part. Seems to have no effect at
all.

3. Modify the selectionChanged() method in MemoryBlocksTreeViewPane so
that it assumes the debug target of the selection in the debug view if
the selection it received isn't a debug element. This doesn't work
because the selection in the debug view doesn't change until well after
the the renderings are created. Before that, the selection in the debug
view is our process object.

4. Modify selectionChanged() in MemoryBlocksTreeViewPane so that if the
selected object is a rendering, it extracts the debug target from its
memory block. This seems to work, but it has a bad smell to it.


Finally...

So what is the stupidly obvious mistake or oversight that I'm making
here? Any suggestions?


Cheers,
Ken

_______________________________________
Ken Dyck
Senior Member of Technical Staff
Software Tools Group
AMI Semiconductor Canada Company
Tel: +1.519.884.9696 ext 2277
Fax: +1.519.884.0228
Email address: ken_dyck@xxxxxxxx
Internet: http://www.amis.com 
AMI Semiconductor - "Silicon Solutions for the Real World"
NOTICE: 
This electronic message contains information that may be confidential or privileged. The information is intended for the use of the individual or entity named above. If you are not the intended recipient, please be aware that any disclosure, copying, distribution or use of the contents of this information is prohibited. If you received this electronic message in error, please notify the sender and delete the copy you received.



Back to the top