Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-dev] [DSF] Variables view issue in remote debugging

Hi   guys:
 
                we have problems with Variables View during development:
 
We are doing:
           Our company has a customized version of GDB, which is aimed for debugging DBS systems. We Java developers take the responsibility of providing a GUI tool on Eclipse CDT platform.
 
We are working on:
          Eclipse 3.5.2,  latest CDT-DSF. we build our debugger on DSF other than CDI
 
We have achived:
          Our product has 2 ways of collaborating with GDB (of course our company's), both have Live debugging and Post-mortem debugging
                     1. Local debugging: The product is deployed on the same machine with DBS. It establishes connection with GDB exactly the same as the standard one (Process p = .....)
                     2. Remote debugging: The product is able to connect to DBS on a remote machine. It establishes connection with GDB via SSH (SSHProcess......)
 
We are at:
           1. Local debugging is fine. Debug views such as Variables View, Registers View, Memory, instruction pointer....etc
           2. Every component except Variables View goes well with Remote Debugging
 
The Issue:
          1. Our variables have extreme complicated data structure. You have to expand, expand, expand.... and then to see the final leaf of the variables tree.
          2. Variable doesn't respond for any operation
          3. GDB doesn't crash, other views goes well.
          4. When we click on Refresh button, the VariablesVMProvider.refresh() gets invoked. we inspected the xxxservice values, no null value. But VariableVMNode doesn't get notified
          5. Close and re-open Varialbes View, no effect
          6. We adjusted the LRU cache size and RxCommandQueue size ,no effect
 
Our modifications on MIVariablesManager
         1. Our GDB doesn't support command: -var-info-path-_expression_, we have no choice but to use:-var-info-_expression_ instead.
         2. The full path of the variable is constructed in such way:

                            

                    private String buildChildExpression(String parentExp, String childExp) {

                                   

                                                return parentExp + "." + childExp;            // "childExp" is retrived from "-var-info-_expression_")

                                                                                                                              // parentExp is the path of parent variable

                    }

               we neglected the original code:

                                                         if (isPointer()) {

                                                                 return "*("+parentExp+")"; //$NON-NLS-1$//$NON-NLS-2$

                                                         }

 

Our observations:

     1. TxThread writes all commands that are put into command queue

      2. All the created commands are put into command queque

      3. In remote debugging. Obeviously Variables View "dies" before sending as many commands as Local debugging does.

Above is the issue which has been bothering us for quite a long time. Finally we turn to CDT team for help, any advice is welcomed and thanked.

 

Regards

Xing  Yun




Back to the top