【gdb】【list】第二行echo是什么意思
【gdb】【list】what does the second line of echo mean
当我在gdb中使用list *func+offset
查看src时,echo的第二行让我很困惑,第304行和*rte_ring_create_elem+0x1cc
有什么关系。
(gdb) l *rte_ring_create_elem+0x1cc
0x9f744 is in rte_ring_create_elem (src/lib/librte_ring/rte_ring.c:309).
304 src/lib/librte_ring/rte_ring.c: No such file or directory.
下面是带有行号的 dpdk src。
294 mz = rte_memzone_reserve_aligned(mz_name, ring_size, socket_id,
295 mz_flags, __alignof__(*r));
296 if (mz != NULL) {
297 r = mz->addr;
298 /* no need to check return value here, we already checked the
299 * arguments above */
300 rte_ring_init(r, name, requested_count, flags);
301
302 te->data = (void *) r;
303 r->memzone = mz;
304
305 TAILQ_INSERT_TAIL(ring_list, te, next);
306 } else {
307 r = NULL;
308 RTE_LOG(ERR, RING, "Cannot reserve memory\n");
309 rte_free(te);
310 }
311 rte_mcfg_tailq_write_unlock();
我已经尝试搜索答案了,但是list
的使用指南都有了。
list *
命令在您指定的二进制文件中的地址周围(默认情况下)列出 10 行源代码。
在您的例子中,您指定了符号地址 rte_ring_create_elem+0x1cc
,因此 gdb 有助于打印实际地址(0x9f744)并告诉您对应于 rte_ring.c 中的第 309 行。然后它会尝试显示周围的 10 行(第 304-313 行),但它找不到源文件,所以给出了您看到的错误。
当我在gdb中使用list *func+offset
查看src时,echo的第二行让我很困惑,第304行和*rte_ring_create_elem+0x1cc
有什么关系。
(gdb) l *rte_ring_create_elem+0x1cc
0x9f744 is in rte_ring_create_elem (src/lib/librte_ring/rte_ring.c:309).
304 src/lib/librte_ring/rte_ring.c: No such file or directory.
下面是带有行号的 dpdk src。
294 mz = rte_memzone_reserve_aligned(mz_name, ring_size, socket_id,
295 mz_flags, __alignof__(*r));
296 if (mz != NULL) {
297 r = mz->addr;
298 /* no need to check return value here, we already checked the
299 * arguments above */
300 rte_ring_init(r, name, requested_count, flags);
301
302 te->data = (void *) r;
303 r->memzone = mz;
304
305 TAILQ_INSERT_TAIL(ring_list, te, next);
306 } else {
307 r = NULL;
308 RTE_LOG(ERR, RING, "Cannot reserve memory\n");
309 rte_free(te);
310 }
311 rte_mcfg_tailq_write_unlock();
我已经尝试搜索答案了,但是list
的使用指南都有了。
list *
命令在您指定的二进制文件中的地址周围(默认情况下)列出 10 行源代码。
在您的例子中,您指定了符号地址 rte_ring_create_elem+0x1cc
,因此 gdb 有助于打印实际地址(0x9f744)并告诉您对应于 rte_ring.c 中的第 309 行。然后它会尝试显示周围的 10 行(第 304-313 行),但它找不到源文件,所以给出了您看到的错误。