1、 main线程没有调用pthread_join

一、初始化

1、rte_eal_cpu_init()函数中,通过读取/sys/devices/system/cpu/cpuX/下的相关信息,确定当前系统有哪些CPU核,已经每个核属于哪个CPU Socket。

2、eal_parse_args()函数,解析-c参数,确认哪些CPU核是可以使用的,以及设置第一个核为MASTER

[root@localhost ring_test]# gdb ./build/app/dpdk_test
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
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 "aarch64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
./build/app/dpdk_test: No such file or directory.
(gdb) set args -c 0x3f
(gdb) b /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:128
No symbol table is loaded.  Use the "file" command.
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) quit
[root@localhost ring_test]# gdb ./build/app/test_ring
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
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 "aarch64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /data1/dpdk-19.11/demo/ring_test/build/app/test_ring...done.
(gdb) set args -c 0x3f
(gdb)  b /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:128
Breakpoint 1 at 0x592bf0: file /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c, line 128.
(gdb) r
Starting program: /data1/dpdk-19.11/demo/ring_test/./build/app/test_ring -c 0x3f
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
EAL: Detected 128 lcore(s)
EAL: Detected 4 NUMA nodes
[New Thread 0xffffbe43d910 (LWP 70068)]
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
[New Thread 0xffffbdc2d910 (LWP 70069)]
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-2048kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
[New Thread 0xffffbd40d910 (LWP 70070)]
[Switching to Thread 0xffffbd40d910 (LWP 70070)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) bt
#0  eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
#1  0x0000ffffbe617d38 in start_thread (arg=0xffffbd40d910) at pthread_create.c:309
#2  0x0000ffffbe55f5f0 in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:91
(gdb) n
[New Thread 0xffffbcbfd910 (LWP 70071)]
[Switching to Thread 0xffffbcbfd910 (LWP 70071)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
[New Thread 0xffffbc3ed910 (LWP 70079)]
[Switching to Thread 0xffffbc3ed910 (LWP 70079)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
[New Thread 0xffffbbbdd910 (LWP 70084)]
[Switching to Thread 0xffffbbbdd910 (LWP 70084)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
[New Thread 0xffffbb3cd910 (LWP 70087)]
[Switching to Thread 0xffffbd40d910 (LWP 70070)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
[Switching to Thread 0xffffbb3cd910 (LWP 70087)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
[Switching to Thread 0xffffbc3ed910 (LWP 70079)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
[Switching to Thread 0xffffbb3cd910 (LWP 70087)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
[Switching to Thread 0xffffbcbfd910 (LWP 70071)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
[Switching to Thread 0xffffbbbdd910 (LWP 70084)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
EAL: PCI device 0000:05:00.0 on NUMA socket 0
EAL:   probe driver: 19e5:200 net_hinic
net_hinic: Initializing pf hinic-0000:05:00.0 in primary process
net_hinic: Device 0000:05:00.0 hwif attribute:
net_hinic: func_idx:0, p2p_idx:0, pciintf_idx:0, vf_in_pf:0, ppf_idx:0, global_vf_id:15, func_type:2
net_hinic: num_aeqs:4, num_ceqs:4, num_irqs:32, dma_attr:2
net_hinic: API CMD poll status timeout
net_hinic: chain type: 0x7
net_hinic: chain hw cpld error: 0x1
net_hinic: chain hw check error: 0x0
net_hinic: chain hw current fsm: 0x0
net_hinic: chain hw current ci: 0x0
net_hinic: Chain hw current pi: 0x1
net_hinic: Send msg to mgmt failed
net_hinic: Failed to get board info, err: -110, status: 0x0, out size: 0x0
net_hinic: Check card workmode failed, dev_name: 0000:05:00.0
net_hinic: Create nic device failed, dev_name: 0000:05:00.0
net_hinic: Initialize 0000:05:00.0 in primary failed
EAL: Requested device 0000:05:00.0 cannot be used
EAL: PCI device 0000:06:00.0 on NUMA socket 0
EAL:   probe driver: 19e5:200 net_hinic
EAL:   using IOMMU type 1 (Type 1)
net_hinic: Initializing pf hinic-0000:06:00.0 in primary process
net_hinic: Device 0000:06:00.0 hwif attribute:
net_hinic: func_idx:1, p2p_idx:1, pciintf_idx:0, vf_in_pf:0, ppf_idx:0, global_vf_id:135, func_type:0
net_hinic: num_aeqs:4, num_ceqs:4, num_irqs:32, dma_attr:2
net_hinic: Get public resource capability:
net_hinic: host_id: 0x0, ep_id: 0x1, intr_type: 0x0, max_cos_id: 0x7, er_id: 0x1, port_id: 0x1
net_hinic: host_total_function: 0xf2, host_oq_id_mask_val: 0x8, max_vf: 0x78
net_hinic: pf_num: 0x2, pf_id_start: 0x0, vf_num: 0xf0, vf_id_start: 0x10
net_hinic: Get l2nic resource capability:
net_hinic: max_sqs: 0x10, max_rqs: 0x10, vf_max_sqs: 0x4, vf_max_rqs: 0x4
net_hinic: Initialize 0000:06:00.0 in primary successfully
EAL: PCI device 0000:7d:00.0 on NUMA socket 0
EAL:   probe driver: 19e5:a222 net_hns3
EAL: PCI device 0000:7d:00.1 on NUMA socket 0
EAL:   probe driver: 19e5:a221 net_hns3
EAL: PCI device 0000:7d:00.2 on NUMA socket 0
EAL:   probe driver: 19e5:a222 net_hns3
EAL: PCI device 0000:7d:00.3 on NUMA socket 0
EAL:   probe driver: 19e5:a221 net_hns3
Starting lcores.
Starting core 1
core 1: Received 1
Starting core 2
core 2: Received 3
Starting core 3
core 3: Received 5
[Switching to Thread 0xffffbd40d910 (LWP 70070)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
Starting core 4
core 4: Received 8
[Switching to Thread 0xffffbbbdd910 (LWP 70084)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
[Switching to Thread 0xffffbcbfd910 (LWP 70071)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) n
Starting core 5
Waiting for lcores to finish.
[Switching to Thread 0xffffbc3ed910 (LWP 70079)]Breakpoint 1, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:133
133                             n = read(m2s, &c, 1);
(gdb) info threadsId   Target Id         Frame 8    Thread 0xffffbb3cd910 (LWP 70087) "lcore-slave-5" 0x0000ffffbe52a9c4 in nanosleep ()at ../sysdeps/unix/syscall-template.S:837    Thread 0xffffbbbdd910 (LWP 70084) "lcore-slave-4" 0x0000ffffbe61f3a8 in read ()at ../sysdeps/unix/syscall-template.S:83
* 6    Thread 0xffffbc3ed910 (LWP 70079) "lcore-slave-3" eal_thread_loop (arg=0x0)at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:1335    Thread 0xffffbcbfd910 (LWP 70071) "lcore-slave-2" 0x0000ffffbe61f3a8 in read ()at ../sysdeps/unix/syscall-template.S:834    Thread 0xffffbd40d910 (LWP 70070) "lcore-slave-1" 0x0000ffffbe61f3a8 in read ()at ../sysdeps/unix/syscall-template.S:833    Thread 0xffffbdc2d910 (LWP 70069) "rte_mp_handle" 0x0000ffffbe61f928 in recvmsg ()at ../sysdeps/unix/syscall-template.S:832    Thread 0xffffbe43d910 (LWP 70068) "eal-intr-thread" 0x0000ffffbe55f7c4 in __GI_epoll_pwait (epfd=10, events=0xffffbe43cfd0, maxevents=<optimized out>, timeout=<optimized out>, set=0x0)at ../sysdeps/unix/sysv/linux/epoll_pwait.c:481    Thread 0xffffbe805510 (LWP 70065) "test_ring" 0x00000000005a196c in rte_eal_wait_lcore (slave_id=5)at /data1/dpdk-19.11/lib/librte_eal/common/eal_common_launch.c:30
(gdb) n

(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加qun免费
领取,关注我持续更新哦! !

[root@localhost ring_test]# gdb ./build/app/test_ring
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
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 "aarch64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /data1/dpdk-19.11/demo/ring_test/build/app/test_ring...done.
(gdb) set args -c 0x3f
(gdb) b main.c:20
Breakpoint 1 at 0x464cd8: file /data1/dpdk-19.11/demo/ring_test/main.c, line 20.
(gdb) r
Starting program: /data1/dpdk-19.11/demo/ring_test/./build/app/test_ring -c 0x3f
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
EAL: Detected 128 lcore(s)
EAL: Detected 4 NUMA nodes
[New Thread 0xffffbe43d910 (LWP 70505)]
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
[New Thread 0xffffbdc2d910 (LWP 70506)]
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-2048kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
[New Thread 0xffffbd40d910 (LWP 70508)]
[New Thread 0xffffbcbfd910 (LWP 70509)]
[New Thread 0xffffbc3ed910 (LWP 70510)]
[New Thread 0xffffbbbdd910 (LWP 70511)]
[New Thread 0xffffbb3cd910 (LWP 70512)]
EAL: PCI device 0000:05:00.0 on NUMA socket 0
EAL:   probe driver: 19e5:200 net_hinic
net_hinic: Initializing pf hinic-0000:05:00.0 in primary process
net_hinic: Device 0000:05:00.0 hwif attribute:
net_hinic: func_idx:0, p2p_idx:0, pciintf_idx:0, vf_in_pf:0, ppf_idx:0, global_vf_id:15, func_type:2
net_hinic: num_aeqs:4, num_ceqs:4, num_irqs:32, dma_attr:2
net_hinic: API CMD poll status timeout
net_hinic: chain type: 0x7
net_hinic: chain hw cpld error: 0x1
net_hinic: chain hw check error: 0x0
net_hinic: chain hw current fsm: 0x0
net_hinic: chain hw current ci: 0x0
net_hinic: Chain hw current pi: 0x1
net_hinic: Send msg to mgmt failed
net_hinic: Failed to get board info, err: -110, status: 0x0, out size: 0x0
net_hinic: Check card workmode failed, dev_name: 0000:05:00.0
net_hinic: Create nic device failed, dev_name: 0000:05:00.0
net_hinic: Initialize 0000:05:00.0 in primary failed
EAL: Requested device 0000:05:00.0 cannot be used
EAL: PCI device 0000:06:00.0 on NUMA socket 0
EAL:   probe driver: 19e5:200 net_hinic
EAL:   using IOMMU type 1 (Type 1)
net_hinic: Initializing pf hinic-0000:06:00.0 in primary process
net_hinic: Device 0000:06:00.0 hwif attribute:
net_hinic: func_idx:1, p2p_idx:1, pciintf_idx:0, vf_in_pf:0, ppf_idx:0, global_vf_id:135, func_type:0
net_hinic: num_aeqs:4, num_ceqs:4, num_irqs:32, dma_attr:2
net_hinic: Get public resource capability:
net_hinic: host_id: 0x0, ep_id: 0x1, intr_type: 0x0, max_cos_id: 0x7, er_id: 0x1, port_id: 0x1
net_hinic: host_total_function: 0xf2, host_oq_id_mask_val: 0x8, max_vf: 0x78
net_hinic: pf_num: 0x2, pf_id_start: 0x0, vf_num: 0xf0, vf_id_start: 0x10
net_hinic: Get l2nic resource capability:
net_hinic: max_sqs: 0x10, max_rqs: 0x10, vf_max_sqs: 0x4, vf_max_rqs: 0x4
net_hinic: Initialize 0000:06:00.0 in primary successfully
EAL: PCI device 0000:7d:00.0 on NUMA socket 0
EAL:   probe driver: 19e5:a222 net_hns3
EAL: PCI device 0000:7d:00.1 on NUMA socket 0
EAL:   probe driver: 19e5:a221 net_hns3
EAL: PCI device 0000:7d:00.2 on NUMA socket 0
EAL:   probe driver: 19e5:a222 net_hns3
EAL: PCI device 0000:7d:00.3 on NUMA socket 0
EAL:   probe driver: 19e5:a221 net_hns3
Starting lcores.
[Switching to Thread 0xffffbcbfd910 (LWP 70509)]Breakpoint 1, lcore_recv (p=0xfffffffff3f8) at /data1/dpdk-19.11/demo/ring_test/main.c:20
20              printf("Starting core %u\n", lcore_id);
(gdb) bt
#0  lcore_recv (p=0xfffffffff3f8) at /data1/dpdk-19.11/demo/ring_test/main.c:20
#1  0x0000000000592d88 in eal_thread_loop (arg=0x0)at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:153
#2  0x0000ffffbe617d38 in start_thread (arg=0xffffbcbfd910) at pthread_create.c:309
#3  0x0000ffffbe55f5f0 in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:91
(gdb) b /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:154
Breakpoint 2 at 0x592d8c: file /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c, line 154.
(gdb) n
Starting core 2
[Switching to Thread 0xffffbc3ed910 (LWP 70510)]Breakpoint 1, lcore_recv (p=0xfffffffff3f8) at /data1/dpdk-19.11/demo/ring_test/main.c:20
20              printf("Starting core %u\n", lcore_id);
(gdb) n
Starting core 3
Waiting for lcores to finish.
22              while (rte_ring_dequeue(p->send_ring, &vp) != 0){
(gdb) p lcore_id
$1 = 3
(gdb) n
25              struct data * d = (struct data *) vp;
(gdb) n
26              printf("core %u: Received %d\n", lcore_id, d->value);
(gdb) n
core 2: Received 3
core 3: Received 1
[Switching to Thread 0xffffbd40d910 (LWP 70508)]Breakpoint 1, lcore_recv (p=0xfffffffff3f8) at /data1/dpdk-19.11/demo/ring_test/main.c:20
20              printf("Starting core %u\n", lcore_id);
(gdb) n
Starting core 1
[Switching to Thread 0xffffbc3ed910 (LWP 70510)]Breakpoint 2, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:154
154                     lcore_config[lcore_id].ret = ret;
(gdb) bt
#0  eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:154
#1  0x0000ffffbe617d38 in start_thread (arg=0xffffbc3ed910) at pthread_create.c:309
#2  0x0000ffffbe55f5f0 in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:91
(gdb) n
155                     rte_wmb();
(gdb) n
160                     if (lcore_config[lcore_id].core_role == ROLE_SERVICE)
(gdb) n
163                             lcore_config[lcore_id].state = FINISHED;
(gdb) n
164             }
(gdb) n
133                             n = read(m2s, &c, 1);
(gdb) list
128             while (1) {
129                     void *fct_arg;
130
131                     /* wait command */
132                     do {
133                             n = read(m2s, &c, 1);
134                     } while (n < 0 && errno == EINTR);
135
136                     if (n <= 0)
137                             rte_panic("cannot read on configuration pipe\n");
(gdb) p lcore_id
$2 = 3
(gdb) n
[Switching to Thread 0xffffbcbfd910 (LWP 70509)]Breakpoint 2, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:154
154                     lcore_config[lcore_id].ret = ret;
(gdb) p lcore_id
$3 = 2
(gdb) list
149                             rte_panic("NULL function pointer\n");
150
151                     /* call the function and store the return value */
152                     fct_arg = lcore_config[lcore_id].arg;
153                     ret = lcore_config[lcore_id].f(fct_arg);
154                     lcore_config[lcore_id].ret = ret;
155                     rte_wmb();
156
157                     /* when a service core returns, it should go directly to WAIT
158                      * state, because the application will not lcore_wait() for it.
(gdb) n
155                     rte_wmb();
(gdb) n
160                     if (lcore_config[lcore_id].core_role == ROLE_SERVICE)
(gdb) list
155                     rte_wmb();
156
157                     /* when a service core returns, it should go directly to WAIT
158                      * state, because the application will not lcore_wait() for it.
159                      */
160                     if (lcore_config[lcore_id].core_role == ROLE_SERVICE)
161                             lcore_config[lcore_id].state = WAIT;
162                     else
163                             lcore_config[lcore_id].state = FINISHED;
164             }
(gdb) n
163                             lcore_config[lcore_id].state = FINISHED;
(gdb) n
164             }
(gdb) n
133                             n = read(m2s, &c, 1);
(gdb) list
128             while (1) {
129                     void *fct_arg;
130
131                     /* wait command */
132                     do {
133                             n = read(m2s, &c, 1);
134                     } while (n < 0 && errno == EINTR);
135
136                     if (n <= 0)
137                             rte_panic("cannot read on configuration pipe\n");
(gdb) n
core 1: Received 5
[Switching to Thread 0xffffbb3cd910 (LWP 70512)]Breakpoint 1, lcore_recv (p=0xfffffffff3f8) at /data1/dpdk-19.11/demo/ring_test/main.c:20
20              printf("Starting core %u\n", lcore_id);
(gdb) n
Starting core 5
22              while (rte_ring_dequeue(p->send_ring, &vp) != 0){
(gdb) n
25              struct data * d = (struct data *) vp;
(gdb) n
26              printf("core %u: Received %d\n", lcore_id, d->value);
(gdb) n
core 5: Received 8
27              d->value ++;
(gdb) n
28              rte_ring_enqueue(p->recv_ring, (void *)d);
(gdb) n
30              return 0;
(gdb) n
31      }
(gdb) nBreakpoint 2, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:154
154                     lcore_config[lcore_id].ret = ret;
(gdb) c
Continuing.
[Switching to Thread 0xffffbd40d910 (LWP 70508)]Breakpoint 2, eal_thread_loop (arg=0x0) at /data1/dpdk-19.11/lib/librte_eal/linux/eal/eal_thread.c:154
154                     lcore_config[lcore_id].ret = ret;
(gdb) c
Continuing.
[Switching to Thread 0xffffbbbdd910 (LWP 70511)]Breakpoint 1, lcore_recv (p=0xfffffffff3f8) at /data1/dpdk-19.11/demo/ring_test/main.c:20
20              printf("Starting core %u\n", lcore_id);
(gdb) c
Continuing.
Starting core 4

原文链接:https://www.cnblogs.com/dream397/p/13647982.html

dpdk 多线程 gdb + master相关推荐

  1. 多进程多线程GDB调试 (转)

    多进程多线程GDB调试   一.线程调试指南:   1. gdb attach pid 挂载到调试进程  2. gdb$ set scheduler-locking on 只执行当前选定线程的开关 3 ...

  2. DPDK多线程:EAL pthread和lcore Affinity(F-Stack配置文件的配置参数:lcore_mask、lcore_list)

    目录 多线程 EAL pthread和lcore Affinity 非EAL pthread支持 公共线程API 控制线程API 已知的问题 cgroup控件 多线程 DPDK通常每个内核固定一个pt ...

  3. linux的基础知识——多线程gdb调试

    1.gdb调试 \qquadgdb调试命令,在生成可执行文件时,加-g gcc xxx.c -o xxx -g \qquad执行gdb xxx,就可以跳转到gdb调试界面,对xxx进行调试. \qqu ...

  4. 《深入浅出DPDK》读书笔记(四):并行计算-SIMD是Single-Instruction Multiple-Data(单指令多数据)

    本文内容为读书笔记,摘自<深入浅出DPDK>. 47.提高处理器主频率对于性能的提升作用是明显而直接的.但一味地提高频率很快会触及频率墙,因为处理器的功耗正比于主频的三次方. 48.提高并 ...

  5. dpdk-16.04 eal lcore 多线程机制分析

    dpdk 多线程流水线 dpdk 抽象的 eal 环境在初始化的时候会探测系统上可用的 cpu 核,为每个核创建一个线程,并初始化相应的数据结构. 一般来说,多线程创建的时候传入的 start_rou ...

  6. 使用“/proc”系统调试多线程程序挂死的问题:

    问题描述:线程retint_careful问题:GDB调试卡主卡死挂住:pstack指令卡死卡主挂住: 1. GDB调试多线程 # gdb GNU gdb (GDB) Red Hat Enterpri ...

  7. 7. EAL parameters(dpdk参数介绍)

    https://doc.dpdk.org/guides-18.11/linux_gsg/linux_eal_parameters.html?highlight=parameters 版本:18.11 ...

  8. 【工欲善其事,必先利其器】之gdb五大高级用法

    本篇文章讲解gdb的一些高级用法,在我们的开发生涯中,调试是很重要的技能,而在linux下开发,最常用的调试工具就是gdb了,所以这里介绍几种gdb比较高级的用法,助力我们的调试技能. 还是先看下思维 ...

  9. MySQL系列(一) MySQL体系结构概述

    1 MySQL 的体系结构 连接池组件 管理服务和工具组件 SQL接口组件 查询分析器组件 优化器组件 缓冲组件 插件式存储引擎(体系结构的核心) 物理文件 2 InnoDB 概述 InnoDB存储引 ...

最新文章

  1. oracle 参数=gt;,解析gt参数
  2. debian,ubuntu 安装mongodb 允许外网访问,修改端口,设置用户和密码
  3. IT人保持健康的必备法宝
  4. 计算机室活动实施方案,微机室活动计划
  5. Java多线程学习三:有哪几种实现生产者消费者模式的方法
  6. php a文件怎么继承b文件的类,php 如何将存在a文件中图片移到b文件中
  7. 游戏开发之C++引用(C++基础)
  8. Selenium1、Selenium2、Selenium3的区别,终于讲清楚了
  9. 计算机科学期刊介绍--各种杂志投稿方式与评价
  10. cad 选择框不是矩形 解决方法
  11. 202013 启明星辰入侵防御 简单使用手册
  12. python钻石和玻璃球游戏_python使用pygame实现笑脸乒乓球弹珠球游戏
  13. 自制操作系统 1 准备工作
  14. Selenium Chrome设置代理之后验证依旧是本机ip原因
  15. PHP excel导出(自定义样式,行高,合并单元格等)
  16. 美国服务贸易进出口额数据 (1999-2019年)
  17. 手把手从底层搭建react应用(如何自己实现react脚手架)(webpack环境搭建)
  18. 股票实时盘口数据获取-东方财富
  19. 平衡面板数据中的缺失值可以存在吗?
  20. 中英互译软件工程初步设计

热门文章

  1. 混凝土及钢筋常用参数
  2. lightgbm实战-二分类问题(贝叶斯优化下调参方法)
  3. P3201 [HNOI2009] 梦幻布丁 启发式合并
  4. 别再喊我调参侠!夕小瑶“科学炼丹”手册了解一下
  5. 解密nmn抗衰老作用,nmn抗衰老的真实性
  6. linux下查看进程号并杀死进程
  7. 令日本人痛恨的七大中国巨星
  8. 小米平板2可以装鸿蒙系统,华为MatePad Pro 2/P50延期至六月发布,为适配鸿蒙系统...
  9. 限制文本行数,CSS文本溢出省略号,及兼容火狐
  10. 产品专治癌症?吉天合堂桦褐孔菌虚假宣传,六级代理涉嫌违法违规