为什么在 /proc/kcore 中使用 gdb 时,我的 vmlinux 中没有调试符号?

2023-11-25

我已经全部配置完毕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.

Why?


到目前为止,这是我最好的猜测:我不知道,但这并不重要。

我不知道为什么 GDB 打印消息“(未找到调试符号)”。我在构建自己的内核时实际上已经看到了这一点。我将内核配置为使用调试符号,但 GDB 在查看内核映像时仍然打印此消息。我从来没有费心去研究它,因为我的图像仍然可以很好地调试。尽管有该消息,GDB 仍然可以反汇编函数、添加断点、查找符号以及单步执行函数。我从来没有注意到缺少调试功能。我猜你也会遇到同样的事情。

Edit:根据您对问题的评论,您似乎正在使用调试器搜索错误的符号。系统调用处理程序以前缀开头sys_,但是单看代码是看不出来的。宏观SYSCALL_DEFINE4(ptrace, ...)最终将函数声明为asmlinkage long sys_ptrace(...),尽管它会做一些其他疯狂的事情,如果你有的话ftrace已启用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 /proc/kcore 中使用 gdb 时,我的 vmlinux 中没有调试符号? 的相关文章

  • 在中断时获取 current->pid

    我正在Linux调度程序上写一些东西 我需要知道在我的中断到来之前哪个进程正在运行 当前的结构可用吗 如果我在中断处理程序中执行 current gt pid 我是否可以获得我中断的进程的 pid 你可以 current gt pid存在并
  • TUI模式下的GDB:如何处理stderr与ui的交互

    我正在尝试使用gdb来调试caffe http caffe berkeleyvision org 我更喜欢使用 tui 模式 因为它允许我查看整个源代码而不仅仅是一行 但有一个问题 每当程序caffe输出一些东西stderr 输出扭曲了 t
  • “perf record”或“perf-record”可以对子进程进行采样吗?

    假设我有一个harness二进制文件 它可以根据命令行选项生成不同的基准 我对这些基准测试非常感兴趣 我有3个选择 更改线束二进制文件以生成perf record运行基准测试并进行采样的子进程 just do perf record har
  • 在 C++ 代码 gdb 中回溯指针

    我在运行 C 应用程序时遇到段错误 在 gdb 中 它显示我的一个指针位置已损坏 但我在应用程序期间创建了 10 万个这样的对象指针 我怎样才能看到导致崩溃的一个 我可以在 bt 命令中执行任何操作来查看该指针的生命周期吗 谢谢 鲁奇 据我
  • 在GDB中的每一行设置断点

    有没有办法用GDB在代码的每一行设置断点 明明我不想打b addr对于每一行 所以我想知道是否有一种快速的方法来做到这一点 Edit请注意 我正在运行由其他人创建的二进制文件 并且我无权访问源代码 不幸的是 该二进制文件尚未使用 g 标志进
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 为什么这段代码会死锁?

    我在可加载模块中创建了 2 个 Linux 内核线程 并将它们绑定到在双核 Android 设备上运行的单独 CPU 内核 运行几次后 我注意到设备重新启动并重置了硬件看门狗定时器 我一直在解决这个问题 什么可能导致僵局 基本上 我需要做的
  • “gdb”调试器奇怪地跳过断点

    这是我的代码的一小段 l2tp inspector cc 14 else if f info gt key proto UDP PROTO 15 if size gt 4 16 uint32 t l2tp part 17 l2tp part
  • 如何将STL容器数据转储到gdb中?

    我无法在 gdb 中转储 STL 无序映射容器值 变量类型是 std unordered map var 我的 gdb 版本 7 7 1 GDB配置 configure host x86 64 linux gnu target x86 64
  • 编译内核进行页表遍历时出现错误

    我正在执行页表遍历 当我准备更新内核时出现错误 kernel sys c In function do sys get page info kernel sys c 2745 23 error passing argument 1 of p
  • 如何让 UIAutomation、模拟器和 Xcode 调试器同时运行?

    谁能向我指出有关如何使 Instruments 运行 UIAutomation 脚本并使用在模拟器中运行的调试器启动 iPhone 应用程序的文档 限制条件 我只有 iPhone 3g 硬件来测试和调试 而 UIAutomation 无法可
  • 为什么 call_usermodehelper 大多数时候都会失败?

    从内核模块中 我尝试使用 call usermodehelper 函数来执行可执行文件 sha1 该可执行文件将文件作为参数并将文件的 SHA1 哈希和写入另一个文件 名为输出 可执行文件完美运行 int result 1 name hom
  • 该程序链接到哪个库来提供给定的功能?

    我有一个程序调用函数foo这是在库中定义的 我如何知道该库在文件系统中的位置 比如它是静态库还是动态链接库 更新 使用ldd 程序有很多依赖库 如何判断哪个库包含函数foo 您没有说您所在的操作系统 答案取决于系统 在 Linux 和大多数
  • Ruby 解释器出现段错误后,是否可以从 corefile 中获取 Ruby 回溯?

    Note 我使用了在使用 libxml ruby gem 时遇到的段错误来说明问题 但我已经用所述 gem 解决了我的问题 这个问题真正涉及的是从 gdb 使用 corefile 查看 Ruby 回溯 即解释器在 Ruby 代码无法处理异常
  • 内存转储格式类似于 gdb 中的 xxd

    我正在尝试检查一个缓冲区 其中包含二进制格式的消息 但也包含字符串数据 作为示例 我正在使用以下 C 代码 int main void char buf 100 x01 x02 x03 x04String Data xAA xBB xCC
  • 要让 DDD 在 XP 上正常运行,Cygwin 的最低安装量是多少?

    我在 Windows XP 上使用 Strawberry Perl 附带的 MinGW 中的 gcc 我想要ddd http www gnu org software ddd 数据显示调试器 也是如此 但显然在 Windows 上获得 dd
  • 在 4.x 内核上的 64 位内存中查找系统调用表

    我正在尝试编写一个简单的内核模块来查找 Linux 中的 sys call table 但遇到了一些麻烦 我在这里找到了 32 位 Linux 的基本指南 https memset wordpress com 2011 03 18 sysc
  • GDB 脚本编写为 MOCK

    我正在尝试使用 GDB 模拟一个函数 用于单元测试父函数 一种方法是在您想要模拟和使用 GDB 的函数中设置一个断点return命令 但是当 GDB 时我无法做同样的事情call使用命令 gdb b secret check Breakpo
  • 多线程进程的线程ID可以与另一个正在运行的进程的进程ID相同吗?

    我正在尝试找到一种方法来唯一标识多进程环境中的线程 我有一个服务器 它跟踪连接到它的不同进程 其中一些是多线程的 一些不是 为了识别多线程连接中的线程 我使用线程 ID 作为唯一标识符 在任何给定时间最多有 1 个多线程进程连接 我的问题是

随机推荐