dpdk 多线程 gdb + master

news2024/11/19 6:32:08

 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 threads
  Id   Target Id         Frame 
  8    Thread 0xffffbb3cd910 (LWP 70087) "lcore-slave-5" 0x0000ffffbe52a9c4 in nanosleep ()
    at ../sysdeps/unix/syscall-template.S:83
  7    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:133
  5    Thread 0xffffbcbfd910 (LWP 70071) "lcore-slave-2" 0x0000ffffbe61f3a8 in read ()
    at ../sysdeps/unix/syscall-template.S:83
  4    Thread 0xffffbd40d910 (LWP 70070) "lcore-slave-1" 0x0000ffffbe61f3a8 in read ()
    at ../sysdeps/unix/syscall-template.S:83
  3    Thread 0xffffbdc2d910 (LWP 70069) "rte_mp_handle" 0x0000ffffbe61f928 in recvmsg ()
    at ../sysdeps/unix/syscall-template.S:83
  2    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:48
  1    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) n

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 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣:递增子序列java

力扣&#xff1a;递增子序列java 流程: 设置一个结果集和路径path 本题不设置used而是再当前层设置一个map 递归三部曲&#xff1a; 参数和返回值&#xff1a;参数为输入数组nums&#xff0c;开始下标startindex&#xff0c;返回值为空 对path>1时的path输入结果集//放到这…

OTP语音芯片SOP8的前世今生_如九齐_硕呈_钰绅等以及国产方案KT148A

目录 一、语音芯片的形态简介 语音芯片ic的其中一个品类&#xff0c;就是SOP8封装的OTP语音芯片&#xff0c;非常的经典和常用。源头的供应商基本都是台系的原厂&#xff0c;比如&#xff1a;九齐、硕呈、佑华等等&#xff0c;其中佑华就算是鼻祖了&#xff0c;早期的4位机也是…

JSP脚本

在 JSP 中&#xff0c;可以使用 JSP 脚本写入 Java 代码。 JSP 脚本可以包含任意数量的 Java 语句&#xff0c;变量、方法和表达式。JSP 脚本会把包含的内容插入到 Servlet 的 service() 方法中。 JSP 脚本语法如下&#xff1a; <% Java语句 %> <jsp:scriptlet>J…

【kubernetes篇】使用Harbor仓库管理kubernetes镜像

引言 Docker容器应用的开发和运行离不开可靠的镜像管理&#xff0c;在企业级的Docker Registry管理项目中&#xff0c;一般使用Harbor&#xff0c;它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。 今天就将Harbor仓库的安装和使用做一…

【手把手】教你玩转SpringCloud Alibaba之GateWay

1、什么是GateWay 在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢&#xff1f;如果没有网关的存在&#xff0c;只能在客户端记录每个微服务的地址&#xff0c;然后分别去调用。这样的话会产生很多问题: - 客户端多次…

2022年亚太地区大学生数学建模竞赛/2022年亚太杯思路

解题方向&#xff1a; 回复&#xff1a;亚太 2022年第十二届亚太地区大学生数学建模竞赛(以下简称“竞赛”)是北京图象图形学学会主办的亚太地区大学生学科类竞赛&#xff0c;竞赛由亚太地区大学生数学建模竞赛组委会负责组织&#xff0c;欢迎各高等院校按照竞赛章程及有关规定…

【EC200U】何为QuecPython以及QPYcom基础操作

EC200U 何为QuecPython以及QPYcom基础操作QuecPython介绍Quec是啥MicroPythonQuecPython与MicroPython的关系QuecPython技术特性IDE(QPYcom)基础操作创建项目导入脚本方法1方法2运行脚本QuecPython是个啥&#xff0c;QPYcom怎么用? QuecPython介绍 Quec是啥 Quec 取自 Quect…

生产环境日志打印console.log内存溢出解决方法

在开发环境里面&#xff0c;开发者经常喜欢使用 console.log 进行日志打印&#xff0c;很好的提高了开发者的开发效率&#xff0c;但是这样容易产生新的问题&#xff0c;因为console的使用&#xff0c;影响内存的滥用&#xff0c;可能造成内存溢出。 分析内存上述的原因 传递…

*深入学习函数(3)-- 递归篇(图文详解)

目录 一、什么是递归 推荐两个问答社区网站 二、递归的两个必要条件 三、递归练习 1、接收一个整型值&#xff08;无符号&#xff09;&#xff0c;按照顺打印它的每一位。输入&#xff1a;1234&#xff0c;输出&#xff1a;1 2 3 4 2、编写函数不允许创建临时变量&#xff0…

rt_thread生成工程模板

系列文章目录 rt-thread 之 fal移植 文章目录系列文章目录前言一、下载ENV 和 RTT源码二、选择BSP生成模板step1 打包模板step2 修改工程模板三、添加软件包和组件step 1选择配置step 2下载软件包和组件step3 生成工程总结常见指令前言 menuconfig 图形化配置界面&#xff0c…

艾美捷Cas9核酸酶参数说明和应用

CRISPR/Cas9是细菌和古细菌在长期演化过程中形成的一种适应性免疫防御系统。CRISPR/Cas9系统通过将入侵噬菌体和质粒DNA的片段整合到CRISPR序列中&#xff0c;并利用相应的CRISPR RNAs &#xff08;crRNAs&#xff09;来指导Cas9蛋白对同源序列的降解&#xff0c;从而提供免疫性…

学习MongoTemplate操作MongoDB增删改查

学习MongoTemplate操作MongoDB增删改查一、准备1、依赖2、yml3、实体类二、案例1、增2、删3、改4、查4.1、根据Id查询数据4.2、条件查询方法4.3、模糊查询4.4、分页查询一、准备 1、依赖 <dependency><groupId>org.springframework.boot</groupId><artif…

脑机直播 x 赛博驱魔!瑞云专访揭秘胶囊计划国风科幻神作《终极体验》制作幕后...

2021年11月B站发起了一个以扶持国内动画人为愿景与出发点的特别项目《胶囊计划》&#xff0c;以搭建一条全新的道路探索未来行业的方式。Renderbus瑞云渲染一直十分关注国创动画的发展&#xff0c;刚刚结束的2022年小宇宙计划就是由B站主办瑞云协办的青年动画赛事&#xff0c;胶…

基于51单片机的倒车雷达设计

基于51单片机的倒车雷达的主板设计&#xff0c;采用四探头多路同步探测&#xff0c;确保返回值的准确性。 主要功能 本系统可具备以下几个功能&#xff1a; (1)倒车时&#xff0c;可显示车辆与后障碍物之间的距离&#xff1b; (2)可自由设定报警距离&#xff1b; (3)当车辆与障…

C语言之#define用法入门详解

一、#define的基本语法 在C语言中&#xff0c;常量是使用频率很高的一个量。常量是指在程序运行过程中&#xff0c;其值不能被改变的量。常量常使用#define来定义。 使用#define定义的常量也称为符号常量&#xff0c;可以提高程序的运行效率。 其常见的用法包括两种&#xff0…

全解消能减震神器之“黏滞阻尼器”(上)

导读&#xff1a; 在我国&#xff0c;被动减震装置得到广泛应用&#xff0c;不仅在高层建筑、加上最近还实施颁布了工程抗震管理条例。目前减震构件及结构类型的组合已有诸多形式&#xff0c;今后随着其性能方面、经济方面及设计创意等方面的改进&#xff0c;可以想象会进一步…

大学生抗击疫情感动人物最美逆行者网页设计作业 html抗疫专题网页设计 最美逆行者网页模板 致敬疫情感动人物网页设计制作

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

[附源码]计算机毕业设计JAVA电子交易平台

[附源码]计算机毕业设计JAVA电子交易平台 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

百数新应用——生产制造信息化管理实用工具

运营自动化是企业信息化的基础&#xff0c;决策智能化是企业信息化的顶峰。尤其是对于中小型企业来说&#xff0c;成功的实施信息化策略对于参与国际市场的竞争具有重要的意义。 百数生产制造管理应用以生产制造管理为核心&#xff0c;功能包括产品结构设置&#xff08;BOM&am…

使用 Docker 和 Traefik 搭建轻量美观的计划任务工具

在《轻量的定时任务工具 Cronicle&#xff1a;前篇》这篇文章中&#xff0c;我们聊过如何通过容器封装 Cronicle 这个已经迭代了七年之久的轻量计划任务工具。 本篇文章中&#xff0c;我们来聊聊如何将它和 Docker 以及 Traefik 一起搭配使用。 写在前面 Cronicle 是一款很棒…