dotgdbinit
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:3k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #
  2. # this file defines some utilities for printing various structures
  3. # found in the net-snmp source code.  You can source it from within
  4. # gdb and then use it to print variable chains, oids, etc directly
  5. # from memory.
  6. # as an example, consider the variables:
  7. #
  8. #   oid    *name;
  9. #   size_t name_len;
  10. #
  11. # normally display oids is difficult under gdb, and the best you can
  12. # do is to use x/12dw name or so to print the first 12 numbers of the
  13. # oid array.  however, with this file you can now use:
  14. #
  15. #   gdb> printoid name_len name
  16. #   .1.3.6.1.2.1.1.0
  17. #
  18. # which will print oids in a more readable fashion.  etc...
  19. #
  20. define initme
  21.   set $varindent = ""
  22. end
  23. define hookpost-run
  24.   initme
  25. end
  26. define printvarval
  27.   printf "value: "
  28.   if $arg0->type == 2
  29.     printf "int: %dn", $arg0->val.integer
  30.   end
  31.   if $arg0->type == 4
  32.     printf "string: %sn", $arg0->val.string
  33.   end
  34.   if $arg0->type == 5
  35.     printf "ASN NULLn"
  36.   end
  37.   if $arg0->type == 6
  38.     printoid (($arg0->val_len)/sizeof(oid)) $arg0->val.objid
  39.   end
  40.   if $arg0->type == 128
  41.     printf "NO SUCH NAMEn"
  42.   end
  43.   if $arg0->type == 129
  44.     printf "NO SUCH INSTANCEn"
  45.   end
  46.   if $arg0->type == 130
  47.     printf "END OF MIB VIEWn"
  48.   end
  49.   if $arg0->type == 194
  50.     printf "AGENTX INCL RANGE: "
  51.     printoid (($arg0->val_len)/sizeof(oid)) $arg0->val.objid
  52.   end
  53.   if $arg0->type == 195
  54.     printf "AGENTX EXCL RANGE: "
  55.     printoid (($arg0->val_len)/sizeof(oid)) $arg0->val.objid
  56.   end
  57. end
  58. document printvarval
  59.   printvarval VARPTR
  60.   prints the value part of a net-snmp "struct variable".
  61.   This is called from inside printvar.
  62. end
  63.   
  64. define printvar
  65.   printf "%stype: %dn", $varindent, $arg0->type
  66.   printf "%soid: ", $varindent
  67.   printoid $arg0->name_length $arg0->name
  68.   printf "%s", $varindent
  69.   printvarval $arg0
  70. end
  71. document printvar
  72.   printvar VARPTR
  73.   prints the variable information contained in a net-snmp struct
  74.   variable.  printvarval POINTER will print it's oid, value type and
  75.   value contents
  76. end
  77. define printvars
  78.   set $tmpcount = 1
  79.   set $tmpvar = $arg0
  80.   set $varindent = "  "
  81.   while $tmpvar != 0
  82.     printf "VARIABLE #%dn", $tmpcount
  83.     printvar $tmpvar
  84.     set $tmpvar = $tmpvar->next_variable
  85.     set $tmpcount = $tmpcount + 1
  86.   end
  87.   set $varindent = ""
  88. end
  89. document printvars
  90.   printvars VARPTR
  91.   calls printvar repeatedly on a chain of variables, displaying all
  92.   the variables in a net-snmp struct variable chain.
  93. end
  94. define printoid
  95.   set $printoid_tmp = 0
  96.   while $printoid_tmp < $arg0
  97.     printf ".%d", $arg1[$printoid_tmp]
  98.     set $printoid_tmp = $printoid_tmp + 1
  99.   end
  100.   printf "n"
  101. end
  102. document printoid
  103.   printoid LENGTH OIDPTR
  104.   prints an oid (.x.y.z...) given it's length and a pointer.
  105. end
  106. define poid
  107.   printoid $arg0_len $arg0
  108. end
  109. document poid
  110.   poid NAME
  111.   shorthand for 'printoid NAME_len NAME"
  112. end
  113. define poidl
  114.   printoid $arg0_length $arg0
  115. end
  116. document poidl
  117.   poid NAME
  118.   shorthand for 'printoid NAME_length NAME"
  119. end