【问题标题】:Using gdb for fork() system call使用 gdb 进行 fork() 系统调用
【发布时间】:2011-07-13 05:43:54
【问题描述】:

我想使用 gdb 来查看 fork() 系统调用的各种细节。为此,我在 fork() 处使用了一个断点,从那里开始我使用 step 命令,但这种方式无法正常工作。

有人可以解释一下如何使用 gdb 查看 fork() 系统调用期间发生的每一个步骤吗?

【问题讨论】:

  • 您是否尝试单步进入内核?

标签: c operating-system fork system-calls


【解决方案1】:

也许您的意思是,一旦调用了 fork,您就想跟随子进程而不是父进程?在这种情况下:

如果你想跟随孩子 进程而不是父进程, 使用命令 set follow-fork-mode。

设置跟随分叉模式 模式

设置调试器响应 fork 或 vfork 的程序调用。一个电话 fork 或 vfork 创建一个新的 过程。模式参数可以是:

parent:原进程在fork后调试。孩子 进程畅通无阻。这是 默认。

child:新进程在fork后调试。父进程运行 畅通无阻。

【讨论】:

    【解决方案2】:

    如果你想看看发生了什么最好先看内核代码,check it here

    我认为您不能从用户空间单步执行内核。您可以使用虚拟服务器使用 KGDB 进行调试。检查blog post here。或者你可以在主内核上使用KGDB

    【讨论】:

    • 当然不能从用户空间单步穿越内核空间,这就是内核空间和用户空间分离的重点。
    猜你喜欢
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 2021-04-28
    • 2014-08-16
    相关资源
    最近更新 更多