1. 安装gdb
//终端输入
sudo apt-get install gdb
2. 启动gdb
gdb
GDB常用命令大全,参考此篇博客
使用GDB调试C项目中的makefile
1.在内核配置中启用调试信息: 在内核配置中,确保启用了调试信息。可以通过以下步骤来配置内核:
make menuconfig
报错:make: *** 没有规则可制作目标“menuconfig”。 停止。参考1、参考2.
安装libncurses5-dev命令:apt-get install libncurses5-dev
补充其他包:sudo apt-get install build-essential kernel-package libncurses5-dev libssl-dev
There are services installed on your system which need to be restarted when certain libraries, such as libpam, libcYou can choose this option to avoid being prompted; instead, all necessary
Restart services during package upgrades without asking?
您的系统上安装了一些服务,当某些库(如libpam、libc)时,这些服务需要重新启动。您可以选择此选项以避免出现提示;相反,在包升级期间无需询问即可重新启动所有必要的服务?
可根据实际情况选择,这里选择的是“否”,然后又有个弹框按“esc”键即可。
ubuntu18.04.1安装linux内核源码命令:
1.查看已安装的内核版本: 首先,查看当前系统安装的内核版本。您可以使用以下命令:
uname -r
记下内核版本号,例如 4.15.0-213-generic
下载内核源码:
使用 apt-get 工具下载相应内核版本的源码。确保您已经安装了 linux-source 包。
sudo apt-get update
sudo apt-get install linux-source
此命令将下载并解压缩内核源码,存储在 /usr/src 目录中。
进入源码目录:
进入 /usr/src 目录,您将在其中找到解压缩后的内核源码目录。
cd /usr/src
创建符号链接:
为了使内核源码目录更易于访问,您可以创建一个符号链接。请将 <version> 替换为您上面记下的内核版本号。
sudo ln -s linux-source-<version> linux
这将创建一个名为 linux 的符号链接,指向内核源码目录。
现在,您就可以在 /usr/src/linux 中找到相应版本的内核源码。请注意,如果需要进行内核模块的编译和调试,您可能还需要安装与当前内核版本匹配的 linux-headers 包。
安装完内核后:进入/usr/src中查看下载好的源码文件,终端输入:tar xvjf linux-source-4.15.0.tar.bz2 -C /home/kernel
将文件解压到/home/kernel目录下。
报错:tar: /home/kernel:无法 open: 没有那个文件或目录
tar: Error is not recoverable: exiting now
自己在/home下创建一个kernel目录即可。
整个显示界面大致分为三部分,上方是操作的说明和图例说明。
<Enter> 按下Enter键进入子菜单。
<Y> 按下Y键,选中这项功能。
<N> 按下N键,排除这项功能 。
<M> 按下M键,以模块的形式选择。
<Esc><Esc> 按两下Esc键,返回上一级菜单
<?> 按下?键,查看高亮功能的帮助信息
</> 按下/键,搜索
[*] 被选中的项目
[ ] 未被选择的项目
<M> 以模块形式被选择的项目
< > 未被选择的模块
5. menuconfig 功能简述 — [野火]OpenWrt用户手册—基于LubanCat-RK系列板卡 文档
重新在内核配置中启用调试信息: 在内核配置中,确保启用了调试信息。可以通过以下步骤来配置内核:
在配置菜单中,选择:
Kernel hacking -->Compile-time checks and compiler options -->[*] Compile the kernel with debug info
构建内核: 重新构建内核以包括新的调试信息。
make -jX
使用使用 nproc
命令查看CUP内核数目,还可以使用 lscpu
命令来获取有关 CPU 的详细信息。
其中 X 是您系统上可用的 CPU 核心数量。然后安装新的内核。
make modules_install
make install
运行命令make modules_install报错:make: *** 没有规则可制作目标“modules_install”。 停止。
重启系统:
选择新内核并重启系统。
加载内核模块:
加载您的内核模块。
insmod your_module.ko
为 GDB 启用调试符号:
在构建内核模块时,确保生成了包含调试信息的模块文件。这通常是 .ko 文件,但可能具有调试信息的 .ko 文件会有一个 .debug 扩展。
用 GDB 调试:
打开 GDB 并加载内核模块文件:
gdb /path/to/vmlinux
在 GDB 中运行以下命令:
target remote :<port>
其中 <port> 是用于内核调试的端口。
add-symbol-file /path/to/your_module.ko <load-address>
其中 <load-address> 是您加载模块时报告的地址。
然后,您可以在 GDB 中设置断点、单步执行等操作。
请注意,调试内核模块可能涉及到很多特定于内核的调试技巧,具体取决于您的内核版本和配置。确保查阅相关的内核文档和 GDB 文档以获取更多详细信息。