【发布时间】:2012-03-02 06:09:14
【问题描述】:
我有一个在 VMWare 上运行的 linux,我在主机中使用 gdb 在调试时附加到它。在运行时,我的内核会导致一些进程挂起,我想进一步调查。
内核给我的是挂起进程的进程 ID 以及堆栈跟踪。但是,如果没有传递参数,堆栈跟踪不是很有用。所以我想收集更多信息。所以我有两个问题:
给定pid,如何获取task_struct对应的进程?我尝试在 gdb 下执行“ p find_task_by_pid_ns(2533, &init_pid_ns) ”,但它挂起。
一旦我得到了 task_struct 和堆栈指针。我的最终目标是重现堆栈跟踪(每个函数调用的参数)。有没有工具可以做到这一点? gdb 是否获取堆栈指针并为我打印堆栈跟踪?
谢谢。
【问题讨论】:
-
但是你只需要你的进程(用户空间)堆栈。或者你是在调试一个内核模块,还是只是你的应用程序???
-
我在调试内核时需要内核栈
标签: linux debugging gdb linux-kernel kernel