我已经配置了所有CONFIG_DEBUG_相关选项y,但是当我尝试调试内核时,它说没有找到调试符号:
gdb /usr/src/linux-2.6.32.9/vmlinux /proc/kcore
Reading symbols from /usr/src/linux-2.6.32.9/vmlinux...(no debugging symbols found)...done.
Run Code Online (Sandbox Code Playgroud)
为什么?
到目前为止,这是我最好的猜测:我不知道,但这并不重要。
我不知道为什么 GDB 打印消息“(未找到调试符号)”。我在构建自己的内核时实际上已经看到了这一点。我将内核配置为使用调试符号,但 GDB 在查看内核映像时仍然打印此消息。我从来没有费心去研究它,因为我的图像仍然可以很好地调试。尽管有该消息,GDB 仍然可以反汇编函数、添加断点、查找符号以及单步执行函数。我从来没有注意到缺少调试功能。我猜你也会遇到同样的事情。
编辑: 根据您对问题的评论,看起来您正在使用调试器搜索错误的符号。系统调用处理程序以 前缀开头sys_,但您无法通过查看代码来判断。该宏SYSCALL_DEFINE4(ptrace, ...)最终只是将函数声明为,尽管如果您启用了ftraceasmlinkage long sys_ptrace(...),它还会做一些其他疯狂的事情。
| 归档时间: |
|
| 查看次数: |
15376 次 |
| 最近记录: |