Пример #1
0
    def varprint_start_no_create(self,
                                 rank,
                                 varobj,
                                 name,
                                 max_depth=gdbconf.varprint_max_depth,
                                 max_children=gdbconf.varprint_max_children,
                                 reset_maxes=False):
        """Start a varprint sequence where we have already created the variable object."""
        v_id = self.varprint_id
        self.varprint_id += 1
        self.varprint_stacks[v_id] = [(varobj, 0)]
        branch_depth = max_depth = VariableObjectManager.get_name_depth(name)

        def _list_handler(record):
            return self.varprint_dfs(record,
                                     rank,
                                     v_id,
                                     name,
                                     max_depth=max_depth,
                                     max_children=max_children,
                                     reset_maxes=reset_maxes,
                                     branch_depth=branch_depth,
                                     branch_name=name)

        tokens = self.run_gdb_command(
            Command("var-list-children", args=("1", '"' + varobj.name + '"')),
            rank)
        self.be.add_token_handler(tokens[rank], _list_handler)
Пример #2
0
 def varprint_start(self, rank, name, max_depth = gdbconf.varprint_max_depth,
                    max_children = gdbconf.varprint_max_children, reset_maxes = False):
     """Start a varprint command sequence by creating the varobj in GDB."""
     v_id = self.varprint_id
     self.varprint_id += 1
     base_name = VariableObjectManager.get_base_name(name)
     branch_depth = max_depth + VariableObjectManager.get_name_depth(name)
     def _list_handler(record):
         return self.varprint_dfs(record, rank, v_id, name, max_depth = max_depth,
                                  max_children = max_children, reset_maxes = False,
                                  branch_depth = branch_depth, branch_name = name)
     def _create_handler(record):
         varobj = VariableObjectManager.create_var_obj(record.results)
         if not varobj:
             # Bad variable name.
             return True
         if not self.varobjs[rank].add_var_obj(varobj):
             print "Could not add varobj."
         if int(varobj.num_child) > 0 or varobj.is_dynamic:
             # Set up our stack.
             self.varprint_stacks[v_id] = [(varobj, 0)]
             tokens = self.run_gdb_command(Command("var-list-children", args = ("1", record.results["name"])),
                                           rank)
             self.be.add_token_handler(tokens[rank], _list_handler)
         else:
             self.comm.send(GDBMessage(VARPRINT_RES_MSG, varobj = varobj, rank = rank, err = False), self.comm.frontend)
     tokens = self.run_gdb_command(Command("var-create", args = (base_name, "*", base_name)), rank)
     self.be.add_token_handler(tokens[rank], _create_handler)
Пример #3
0
 def varprint_start_no_create(self, rank, varobj, name, max_depth = gdbconf.varprint_max_depth,
                              max_children = gdbconf.varprint_max_children, reset_maxes = False):
     """Start a varprint sequence where we have already created the variable object."""
     v_id = self.varprint_id
     self.varprint_id += 1
     self.varprint_stacks[v_id] = [(varobj, 0)]
     branch_depth = max_depth = VariableObjectManager.get_name_depth(name)
     def _list_handler(record):
         return self.varprint_dfs(record, rank, v_id, name, max_depth = max_depth,
                                  max_children = max_children, reset_maxes = reset_maxes,
                                  branch_depth = branch_depth, branch_name = name)
     tokens = self.run_gdb_command(Command("var-list-children", args = ("1", '"' + varobj.name + '"')), rank)
     self.be.add_token_handler(tokens[rank], _list_handler)
Пример #4
0
    def varprint_start(self,
                       rank,
                       name,
                       max_depth=gdbconf.varprint_max_depth,
                       max_children=gdbconf.varprint_max_children,
                       reset_maxes=False):
        """Start a varprint command sequence by creating the varobj in GDB."""
        v_id = self.varprint_id
        self.varprint_id += 1
        base_name = VariableObjectManager.get_base_name(name)
        branch_depth = max_depth + VariableObjectManager.get_name_depth(name)

        def _list_handler(record):
            return self.varprint_dfs(record,
                                     rank,
                                     v_id,
                                     name,
                                     max_depth=max_depth,
                                     max_children=max_children,
                                     reset_maxes=False,
                                     branch_depth=branch_depth,
                                     branch_name=name)

        def _create_handler(record):
            varobj = VariableObjectManager.create_var_obj(record.results)
            if not varobj:
                # Bad variable name.
                return True
            if not self.varobjs[rank].add_var_obj(varobj):
                print "Could not add varobj."
            if int(varobj.num_child) > 0 or varobj.is_dynamic:
                # Set up our stack.
                self.varprint_stacks[v_id] = [(varobj, 0)]
                tokens = self.run_gdb_command(
                    Command("var-list-children",
                            args=("1", record.results["name"])), rank)
                self.be.add_token_handler(tokens[rank], _list_handler)
            else:
                self.comm.send(
                    GDBMessage(VARPRINT_RES_MSG,
                               varobj=varobj,
                               rank=rank,
                               err=False), self.comm.frontend)

        tokens = self.run_gdb_command(
            Command("var-create", args=(base_name, "*", base_name)), rank)
        self.be.add_token_handler(tokens[rank], _create_handler)