新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
[root@debug ~]# ps -ef | grep mysql
root 24589 1 0 07:58 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
mysql 24794 24589 0 07:58 ? 00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/mysql-debug.log --pid-file=debug.pid --socket=/tmp/mysql.sock --port=3306
root 25009 24993 0 11:29 pts/2 00:00:00 grep mysql
|
[root@debug ~]# gdb
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-92.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
(gdb) attach 24794
Attaching to process 24794
Reading symbols from /usr/local/mysql/bin/mysqld...done.
Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done.
[New LWP 24969]
[New LWP 24824]
[New LWP 24821]
[New LWP 24820]
[New LWP 24819]
[New LWP 24818]
[New LWP 24817]
[New LWP 24816]
[New LWP 24815]
[New LWP 24814]
[New LWP 24813]
[New LWP 24812]
[New LWP 24811]
[New LWP 24810]
[New LWP 24809]
[New LWP 24808]
[New LWP 24806]
[New LWP 24805]
[New LWP 24804]
[New LWP 24803]
[New LWP 24802]
[New LWP 24801]
[New LWP 24800]
[New LWP 24799]
[New LWP 24798]
[New LWP 24797]
[New LWP 24796]
[New LWP 24795]
[Thread debugging using libthread_db enabled]
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/libcrypt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libcrypt.so.1
Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/librt.so.1
Reading symbols from /usr/lib64/libstdc++.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libstdc++.so.6
Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libgcc_s.so.1
Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib64/libfreebl3.so...(no debugging symbols found)...done.
Loaded symbols for /lib64/libfreebl3.so
Reading symbols from /lib64/libnss_files.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libnss_files.so.2
0x00007f8801dfd383 in poll () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.209.el6_9.2.x86_64 libgcc-4.4.7-18.el6.x86_64 libstdc++-4.4.7-18.el6.x86_64 nss-softokn-freebl-3.14.3-23.el6_7.x86_64
|
bool Sql_cmd_insert::mysql_insert(THD *thd,TABLE_LIST *table_list)
{
DBUG_ENTER("mysql_insert");
LEX *const lex= thd->lex;
int error, res;
bool err= true;
bool transactional_table, joins_freed= FALSE;
bool changed;
bool is_locked= false;
ulong counter= 0;
ulonglong id;
|
(gdb) b Sql_cmd_insert::mysql_insert
Breakpoint 1 at 0x17bd1b9: file /root/mysql-server/sql/sql_insert.cc, line 423.
|
(gdb) bt
#0 0x00007f8801dfd383 in poll () from /lib64/libc.so.6
#1 0x00000000016c1155 in Mysqld_socket_listener::listen_for_connection_event (this=0x45d8870)
at /root/mysql-server/sql/conn_handler/socket_connection.cc:852
#2 0x0000000000ece89c in Connection_acceptor at /root/mysql-server/sql/conn_handler/connection_acceptor.h:66
#3 0x0000000000ec6226 in mysqld_main (argc=17, argv=0x3ab4248) at /root/mysql-server/sql/mysqld.cc:5045
#4 0x0000000000ebd2d4 in main (argc=9, argv=0x7fffb2aa7408) at /root/mysql-server/sql/main.cc:25
|
(gdb) n
Single stepping until exit from function poll,
which has no line number information.
Mysqld_socket_listener::listen_for_connection_event (this=0x45d8870) at /root/mysql-server/sql/conn_handler/socket_connection.cc:859
859 if (retval < 0 && socket_errno != SOCKET_EINTR)
(gdb) n
871 if (retval < 0 || abort_loop)
(gdb) n
876 MYSQL_SOCKET listen_sock= MYSQL_INVALID_SOCKET;
(gdb) n
877 bool is_unix_socket= false;
(gdb) n
879 for (uint i= 0; i < m_socket_map.size(); ++i)
(gdb) n
881 if (m_poll_info.m_fds[i].revents & POLLIN)
(gdb) n
879 for (uint i= 0; i < m_socket_map.size(); ++i)
(gdb) n
881 if (m_poll_info.m_fds[i].revents & POLLIN)
(gdb) n
883 listen_sock= m_poll_info.m_pfs_fds[i];
(gdb) n
884 is_unix_socket= m_socket_map[listen_sock];
(gdb) n
885 break;
(gdb) n
904 for (uint retry= 0; retry < MAX_ACCEPT_RETRY; retry++)
(gdb) n
906 socket_len_t length= sizeof(struct sockaddr_storage);
(gdb) n
908 (struct sockaddr *)(&cAddr), &length);
(gdb) n
909 if (mysql_socket_getfd(connect_sock) != INVALID_SOCKET ||
(gdb) n
… ...
(gdb) c
Continuing.
|
[root@localhost:(none)][11:41:15am] MySQL-> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
[root@localhost:test][11:49:12am] MySQL-> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t |
| t1 |
+----------------+
2 rows in set (0.00 sec)
[root@localhost:test][11:49:16am] MySQL-> select * from t;
+------+------+
| id | name |
+------+------+
| 1 | aaa |
| 2 | aaa |
| 3 | aaa |
| 4 | aaa |
+------+------+
4 rows in set (0.00 sec)
|
(gdb) c
Continuing.
[Switching to Thread 0x7f87e00b4700 (LWP 24824)]
Breakpoint 1, Sql_cmd_insert::mysql_insert (this=0x7f87f40147b8, thd=0x7f87f401bc60, table_list=0x7f87f4013fe0)
at /root/mysql-server/sql/sql_insert.cc:423
423 DBUG_ENTER("mysql_insert");
(gdb) n
425 LEX *const lex= thd->lex;
(gdb) n
427 bool err= true;
(gdb) c
Continuing.
|