【发布时间】:2017-07-20 07:19:51
【问题描述】:
我正在尝试直接从 linux 内核中的函数 start_kernel() 调试 linux 内核。
这基本上就是我所做的
从 kernel.org 下载 4.10 的内核源代码 提取源码后:
make menuconfig : 更改内核调试设置
make -j4: 编译内核
直接发出命令,没有任何FS
qemu-system-x86_64 -kernel linux-4.10/arch/x86/boot/bzImage -append root=/dev/zero -s -S qem 应该停止了:
接下来在另一个终端,我启动了 gdb
gdb vmlinux : 输出如下
... ...
从 vmlinux 读取符号...完成。
(gdb) 远程目标:1234 使用 :1234 进行远程调试 ??() 中的 0x0000fff0 (gdb) 列表
1 /*
2 *
3 * Copyright (C) 1991, 1992 Linus Torvalds
4 *
5 * Enhanced CPU detection and feature setting code by Mike Jagdis
6 * and Martin Mares, November 1997.
7 */
8
9 .text
10 #include <linux/threads.h>
这意味着调试符号在那里。 现在当我使用命令时
(gdb) b start_kernel
0xc1ba986e 处的断点 1:文件 init/main.c,第 483 行。
然后我按 c(继续),它没有达到断点。
我做错了什么?
谢谢
【问题讨论】:
标签: debugging linux-kernel remote-debugging