User Tools

Site Tools


gdb

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
gdb [2024/12/12 08:30] keremetgdb [2024/12/17 20:24] (current) keremet
Line 12: Line 12:
 Компиляция Компиляция
  
-  wget https://ftp.gnu.org/gnu/gdb/gdb-15.2.tar.xz +  cd binutils-gdb
-  tar xf gdb-15.2.tar.xz  +
-  cd gdb-15.2+
   ./configure --prefix=/usr/local/gdb   ./configure --prefix=/usr/local/gdb
   make   make
Line 28: Line 26:
  
  
-Для тестирования \\ +Для тестирования 
-b exec_simple_query \\ +  b exec_simple_query 
-print *parsetree_list  +  print *parsetree_list  
------------- +  b ExecProcNode 
-gdbtypes.c +  p node->ps->plan
-  static bool type_is_Node(struct type *type) +
-  +
- return type->code () == TYPE_CODE_STRUCT && type->num_fields () > 0  +
-    && strcmp(type->field (0).name (), "type") == 0 +
-    && strcmp(type->field (0).type ()->name (), "NodeTag") == 0; +
-  } +
-   +
-  static struct type * get_type_from_NodeTag(struct type *nodeType, CORE_ADDR addr) +
-  { +
- struct type *typeNodeTag = check_typedef (nodeType->field (0).type ()); +
- LONGEST enumval = read_memory_unsigned_integer(addr, typeNodeTag->length(), BFD_ENDIAN_LITTLE); +
-   +
- unsigned enumLen = typeNodeTag->num_fields (); +
- for (unsigned i = 0; i < enumLen; i++) +
- if (enumval == typeNodeTag->field (i).loc_enumval ()) +
-+
- const char *type_name = typeNodeTag->field (i).name (); +
- if (strlen(type_name) <= 2 || type_name[0] != 'T' || type_name[1] != '_'+
- break; +
-   +
- type_name += 2; +
- return lookup_typename (current_language, type_name, NULL, 0); +
-+
-   +
- return nullptr; +
-  } +
-  /* Worker for resolved_dynamic_type.  */ +
-   +
-  static struct type * +
-  resolve_dynamic_type_internal (struct type *type, +
-        struct property_addr_info *addr_stack, +
-        const frame_info_ptr &frame, +
-        bool top_level) +
-  { +
-  struct type *real_type = check_typedef (type); +
-  struct type *resolved_type = nullptr; +
-  struct dynamic_prop *prop; +
-  CORE_ADDR value; +
-   +
-  if (real_type->code () == TYPE_CODE_PTR) +
-+
-   real_type = check_typedef (real_type->target_type()); +
-   if (type_is_Node(real_type)) +
-+
- CORE_ADDR ptr; +
- read_memory (addr_stack->addr, (gdb_byte*)&ptr, sizeof(ptr)); +
- struct type *t = get_type_from_NodeTag(real_type, ptr); +
- if (t == nullptr) +
- return type; +
- return lookup_pointer_type(t); +
-+
-+
-  else if (type_is_Node(real_type)) +
-+
- struct type *t = get_type_from_NodeTag(real_type, addr_stack->addr); +
- if (t == nullptr) +
- return type; +
- return check_typedef(t); +
-+
-   +
-  if (!is_dynamic_type_internal (real_type, top_level)) +
-    return type; +
 ---------- ----------
 еще вариант, но он не работает с IDE еще вариант, но он не работает с IDE
Line 159: Line 94:
  /lib64/ld-linux-x86-64.so.2 (0x00007f4bb01d3000)  /lib64/ld-linux-x86-64.so.2 (0x00007f4bb01d3000)
  
 +  sudo apt-get install liblzma-devel-static libncurses-devel-static
 +  ./configure --with-static-standard-libraries --without-zstd --disable-compressed-debug-sections --with-mpfr=/opt/stalin/mpfr-4.2.1 --with-gmp=/opt/stalin/gmp-6.3.0
 +  
 + wget https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz
 + tar xf gmp-6.3.0.tar.xz 
 + cd gmp-6.3.0
 + ./configure --disable-shared --prefix=/opt/stalin/gmp-6.3.0
 + make -j`nproc`
 + make install
 + # find /opt/stalin/gmp-6.3.0
 + /opt/stalin/gmp-6.3.0
 + /opt/stalin/gmp-6.3.0/include
 + /opt/stalin/gmp-6.3.0/include/gmp.h
 + /opt/stalin/gmp-6.3.0/share
 + /opt/stalin/gmp-6.3.0/share/info
 + /opt/stalin/gmp-6.3.0/share/info/gmp.info-1
 + /opt/stalin/gmp-6.3.0/share/info/gmp.info
 + /opt/stalin/gmp-6.3.0/share/info/gmp.info-2
 + /opt/stalin/gmp-6.3.0/lib
 + /opt/stalin/gmp-6.3.0/lib/libgmp.a
 + /opt/stalin/gmp-6.3.0/lib/pkgconfig
 + /opt/stalin/gmp-6.3.0/lib/pkgconfig/gmp.pc
 + /opt/stalin/gmp-6.3.0/lib/libgmp.la
 + [root@7ea34f557e84 gmp-6.3.0]# 
 +
 +
 + git clone https://gitlab.inria.fr/mpfr/mpfr.git
 + cd mpfr
 + git checkout 4.2.1
 + ./autogen.sh
 + ./configure --with-gmp=/opt/stalin/gmp-6.3.0 --disable-shared --prefix=/opt/stalin/mpfr-4.2.1
 + make -j`nproc`
 + make install
 + [root@7ea34f557e84 mpfr]# find /opt/stalin/mpfr-4.2.1
 + /opt/stalin/mpfr-4.2.1
 + /opt/stalin/mpfr-4.2.1/include
 + /opt/stalin/mpfr-4.2.1/include/mpf2mpfr.h
 + /opt/stalin/mpfr-4.2.1/include/mpfr.h
 + /opt/stalin/mpfr-4.2.1/share
 + /opt/stalin/mpfr-4.2.1/share/doc
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/TODO
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/NEWS
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/COPYING.LESSER
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/COPYING
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/FAQ.html
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/BUGS
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/AUTHORS
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/sample.c
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/ReadMe
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/divworst.c
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/threads.c
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/rndo-add.c
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/can_round.c
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/version.c
 + /opt/stalin/mpfr-4.2.1/share/info
 + /opt/stalin/mpfr-4.2.1/share/info/mpfr.info
 + /opt/stalin/mpfr-4.2.1/lib
 + /opt/stalin/mpfr-4.2.1/lib/libmpfr.a
 + /opt/stalin/mpfr-4.2.1/lib/pkgconfig
 + /opt/stalin/mpfr-4.2.1/lib/pkgconfig/mpfr.pc
 + /opt/stalin/mpfr-4.2.1/lib/libmpfr.la
 + [root@7ea34f557e84 mpfr]# 
 +
 + wget https://github.com/libexpat/libexpat/releases/download/R_2_6_4/expat-2.6.4.tar.gz
 + tar xf expat-2.6.4.tar.gz
 + cd expat-2.6.4/
 + ./configure --prefix=/opt/stalin/expat-2.6.4 --disable-shared
 + make -j`nproc`
 + sudo make install
gdb.1733992201.txt.gz · Last modified: 2024/12/12 08:30 by keremet