我正在尝试调试代码中的一些函数。不幸的是,gdb在系统中不可用,所以目前通过printk消息(它是一个Linux内核驱动程序)完成调试。
使用某些参数调用函数。我想知道是否可以知道该功能的使用者和方式。
感谢。
答案 0 :(得分:5)
您可以启用堆栈转储以查看堆栈和调用跟踪。您可以使用函数dump_stack()在默认控制台上打印堆栈和调用跟踪。
看看:
答案 1 :(得分:1)
您还可以通过Ctags和cscope离线阅读代码。
在vim中使用cscope f c Function_name,您将获得呼叫追踪。
在Windows中,您可以尝试使用Source Insight。
答案 2 :(得分:1)
GCC提供__builtin_return_address
功能
__builtin_return_address(0)
应该在调用函数中为您提供呼叫站点的地址。在/proc/kallsyms
中搜索最近的值以查找函数。
答案 3 :(得分:1)
在内核代码中调用dump_stack()是可行的方法。