Blame dotgdbinit

Packit fcad23
#
Packit fcad23
# this file defines some utilities for printing various structures
Packit fcad23
# found in the net-snmp source code.  You can source it from within
Packit fcad23
# gdb and then use it to print variable chains, oids, etc directly
Packit fcad23
# from memory.
Packit fcad23
# 
Packit fcad23
# as an example, consider the variables:
Packit fcad23
#
Packit fcad23
#   oid    *name;
Packit fcad23
#   size_t name_len;
Packit fcad23
#
Packit fcad23
# normally display oids is difficult under gdb, and the best you can
Packit fcad23
# do is to use x/12dw name or so to print the first 12 numbers of the
Packit fcad23
# oid array.  however, with this file you can now use:
Packit fcad23
#
Packit fcad23
#   gdb> printoid name_len name
Packit fcad23
#   .1.3.6.1.2.1.1.0
Packit fcad23
#
Packit fcad23
# which will print oids in a more readable fashion.  etc...
Packit fcad23
#
Packit fcad23
Packit fcad23
define initme
Packit fcad23
  set $varindent = ""
Packit fcad23
end
Packit fcad23
Packit fcad23
define hookpost-run
Packit fcad23
  initme
Packit fcad23
end
Packit fcad23
Packit fcad23
define printvarval
Packit fcad23
  printf "value: "
Packit fcad23
  if $arg0->type == 2
Packit fcad23
    printf "int: %d\n", $arg0->val.integer
Packit fcad23
  end
Packit fcad23
  if $arg0->type == 4
Packit fcad23
    printf "string: %s\n", $arg0->val.string
Packit fcad23
  end
Packit fcad23
  if $arg0->type == 5
Packit fcad23
    printf "ASN NULL\n"
Packit fcad23
  end
Packit fcad23
  if $arg0->type == 6
Packit fcad23
    printoid (($arg0->val_len)/sizeof(oid)) $arg0->val.objid
Packit fcad23
  end
Packit fcad23
  if $arg0->type == 128
Packit fcad23
    printf "NO SUCH NAME\n"
Packit fcad23
  end
Packit fcad23
  if $arg0->type == 129
Packit fcad23
    printf "NO SUCH INSTANCE\n"
Packit fcad23
  end
Packit fcad23
  if $arg0->type == 130
Packit fcad23
    printf "END OF MIB VIEW\n"
Packit fcad23
  end
Packit fcad23
  if $arg0->type == 194
Packit fcad23
    printf "AGENTX INCL RANGE: "
Packit fcad23
    printoid (($arg0->val_len)/sizeof(oid)) $arg0->val.objid
Packit fcad23
  end
Packit fcad23
  if $arg0->type == 195
Packit fcad23
    printf "AGENTX EXCL RANGE: "
Packit fcad23
    printoid (($arg0->val_len)/sizeof(oid)) $arg0->val.objid
Packit fcad23
  end
Packit fcad23
end
Packit fcad23
document printvarval
Packit fcad23
  printvarval VARPTR
Packit fcad23
  prints the value part of a net-snmp "struct variable".
Packit fcad23
  This is called from inside printvar.
Packit fcad23
end
Packit fcad23
Packit fcad23
  
Packit fcad23
Packit fcad23
define printvar
Packit fcad23
  printf "%stype: %d\n", $varindent, $arg0->type
Packit fcad23
  printf "%soid: ", $varindent
Packit fcad23
  printoid $arg0->name_length $arg0->name
Packit fcad23
  printf "%s", $varindent
Packit fcad23
  printvarval $arg0
Packit fcad23
end
Packit fcad23
document printvar
Packit fcad23
  printvar VARPTR
Packit fcad23
  prints the variable information contained in a net-snmp struct
Packit fcad23
  variable.  printvarval POINTER will print it's oid, value type and
Packit fcad23
  value contents
Packit fcad23
end
Packit fcad23
Packit fcad23
define printvars
Packit fcad23
  set $tmpcount = 1
Packit fcad23
  set $tmpvar = $arg0
Packit fcad23
  set $varindent = "  "
Packit fcad23
  while $tmpvar != 0
Packit fcad23
    printf "VARIABLE #%d\n", $tmpcount
Packit fcad23
    printvar $tmpvar
Packit fcad23
    set $tmpvar = $tmpvar->next_variable
Packit fcad23
    set $tmpcount = $tmpcount + 1
Packit fcad23
  end
Packit fcad23
  set $varindent = ""
Packit fcad23
end
Packit fcad23
document printvars
Packit fcad23
  printvars VARPTR
Packit fcad23
  calls printvar repeatedly on a chain of variables, displaying all
Packit fcad23
  the variables in a net-snmp struct variable chain.
Packit fcad23
end
Packit fcad23
Packit fcad23
define printoid
Packit fcad23
  set $printoid_tmp = 0
Packit fcad23
  while $printoid_tmp < $arg0
Packit fcad23
    printf ".%d", $arg1[$printoid_tmp]
Packit fcad23
    set $printoid_tmp = $printoid_tmp + 1
Packit fcad23
  end
Packit fcad23
  printf "\n"
Packit fcad23
end
Packit fcad23
document printoid
Packit fcad23
  printoid LENGTH OIDPTR
Packit fcad23
  prints an oid (.x.y.z...) given it's length and a pointer.
Packit fcad23
end
Packit fcad23
Packit fcad23
define poid
Packit fcad23
  printoid $arg0_len $arg0
Packit fcad23
end
Packit fcad23
document poid
Packit fcad23
  poid NAME
Packit fcad23
  shorthand for 'printoid NAME_len NAME"
Packit fcad23
end
Packit fcad23
Packit fcad23
define poidl
Packit fcad23
  printoid $arg0_length $arg0
Packit fcad23
end
Packit fcad23
document poidl
Packit fcad23
  poid NAME
Packit fcad23
  shorthand for 'printoid NAME_length NAME"
Packit fcad23
end
Packit fcad23
Packit fcad23
define printindex
Packit fcad23
  printoid $arg0->len $arg0->oids
Packit fcad23
end
Packit fcad23
document printindex
Packit fcad23
  printindex NETSNMP_INDEX_PTR
Packit fcad23
  prints the OID contained in a netsnmp_index struct variable.
Packit fcad23
end
Packit fcad23