使用 gdb 进行 fork() 系统调用

发布于 2024-10-21 12:53:20 字数 137 浏览 3 评论 0原文

我想使用 gdb 来研究 fork() 系统调用的各种细节。为此,我在 fork() 处使用了一个断点,从那里开始我使用步骤命令,但这样它就不能正常工作。

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

I want to use gdb for looking into the various details of the fork() system call. To do this, I used one breakpoint at the fork() and from there onwards i am using step command but this way it is not working fine.

Can somebody explain me how to use gdb to look into every single step occuring during fork() system call?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神经大条 2024-10-28 12:53:20

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

如果你想关注孩子
进程而不是父进程,
使用命令集 follow-fork-mode。

设置 follow-fork-mode 模式

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

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

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

Maybe you meant that you want to follow the child process instead of the parent once the fork is called? In that case:

If you want to follow the child
process instead of the parent process,
use the command set follow-fork-mode.

set follow-fork-mode mode

Set the debugger response to a program call of fork or vfork. A call
to fork or vfork creates a new
process. The mode argument can be:

parent: The original process is debugged after a fork. The child
process runs unimpeded. This is the
default.

child: The new process is debugged after a fork. The parent process runs
unimpeded.

一刻暧昧 2024-10-28 12:53:20

如果您想了解发生了什么,最好先查看内核代码,在这里查看

我认为您不能从用户空间单步执行内核。您可以使用虚拟服务器使用 KGDB 进行调试。查看此处的博客文章。或者您可以在主内核上使用 KGDB

If you want to see whats happening best if to look at the kernel code first, check it here.

I don't think you can single step through kernel from user space. You can use virtual server to do the debugging using KGDB. Check blog post here. Or you can use KGDB on main kernel.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文