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