Debugging 我怎么知道函数是从哪里调用的?

Debugging 我怎么知道函数是从哪里调用的?,debugging,linux-kernel,kernel,linux-device-driver,Debugging,Linux Kernel,Kernel,Linux Device Driver,我试图调试代码中的一些函数。不幸的是,gdb在系统中不可用,所以目前调试是通过printk消息完成的(它是linux内核驱动程序) 正在使用一些参数调用一个函数。我想知道是否有可能知道谁以及如何调用该函数 谢谢。您可以启用堆栈转储以查看堆栈和调用跟踪。可以使用函数dump_stack()在默认控制台上打印堆栈和调用跟踪 看看: 您可以启用堆栈转储以查看堆栈和调用跟踪。可以使用函数dump_stack()在默认控制台上打印堆栈和调用跟踪 看看: 您还可以通过Ctags和cscope离线

我试图调试代码中的一些函数。不幸的是,gdb在系统中不可用,所以目前调试是通过printk消息完成的(它是linux内核驱动程序)

正在使用一些参数调用一个函数。我想知道是否有可能知道谁以及如何调用该函数


谢谢。

您可以启用堆栈转储以查看堆栈和调用跟踪。可以使用函数dump_stack()在默认控制台上打印堆栈和调用跟踪

看看:


您可以启用堆栈转储以查看堆栈和调用跟踪。可以使用函数dump_stack()在默认控制台上打印堆栈和调用跟踪

看看:


您还可以通过Ctags和cscope离线读取代码

在vim中使用cscope f c Function_name,您将获得调用跟踪


在windows中,您可以尝试Source Insight。

您也可以通过Ctags和cscope脱机读取代码

在vim中使用cscope f c Function_name,您将获得调用跟踪


在windows中,您可以尝试Source Insight。

GCC提供了函数
\u内置\u返回\u地址


\u内置返回地址(0)
应提供调用函数中调用站点的地址。在
/proc/kallsyms
中搜索最近的值以查找函数。

GCC提供函数
\u内置返回\u地址

\u内置返回地址(0)
应提供调用函数中调用站点的地址。在
/proc/kallsyms
中搜索最接近的值以查找函数。

在内核代码中调用dump_stack()是一种方法。

在内核代码中调用dump_stack()是一种方法