如何确定某个函数在Linux内核代码中的位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何确定某个函数在Linux内核代码中的位置相关的知识,希望对你有一定的参考价值。

比如,我要知道atoi()函数的定义,怎么确定它在哪个文件里,我有Linux内核代码,但不知道它在哪,怎么找啊,malloc函数呢?怎么确定?

    如果要看这两个函数在标准库中的定义用ctags或cscope生成索引.h,cscope,可以跳转到函数定义,man malloc,声明见stdlib。

    如果仍然找不到,可以用ctags,si或grep。

    windows下用source insight也可,然后查找函数定义,用grep -r 搜索关键字,atoi和malloc在C的标准库中有定义。

    1.安装ctags

    在源代码目录下运行

    ctags -R

    这样,会递归生成当前目录下及其子目录的tags文件。

    2.使用VIM根据tags文件查找函数或结构定义。

    1.在源码目录下查找

    vi -t tagname

    2.如果要在任意位置使用,则需要把该tags文件添加到~/.vimrc文件中

    set tags=/home/money/sda8/2.6232/tags

    3.如果要在代码中实时跟踪,则光标移动到函数名上,使用CTRL+]键,按CTRL+t可以返回。

    如果要跟踪系统函数,使用shift+K可以自动跳转道光标所在函数的手册。

参考技术A 用ctags或cscope生成索引,可以跳转到函数定义。
windows下用source insight也可。如果仍然找不到,用grep -r 搜索关键字。

如果没记错,atoi和malloc在C的标准库中有定义,声明见stdlib.h。标准库的函数都可以man。 man atoi,man malloc. 如果要看这两个函数在标准库中的定义,可以下载glibc源代码,然后查找函数定义。同样可以用ctags,cscope,si或grep。本回答被提问者采纳
参考技术B 用ctags或cscope生成索引,可以跳转到函数定义。
windows下用source insight也可。如果仍然找不到,用grep -r 搜索关键字。

如果没记错,atoi和malloc在C的标准库中有定义,声明见stdlib.h。标准库的函数都可以man。 man atoi,man malloc. 如果要看这两个函数在标准库中的定义,可以下载glibc源代码,然后查找函数定义。同样可以用ctags,cscope,si或grep。
参考技术C 在linux控制台输入:
man atoi
即可知道atoi函数的定义
同理,输入:
man malloc
即可知道malloc的定义
参考技术D 到网上找到POSIX标准,里面有全部基本的函数的定义以及位置,如果找不到再找我要吧

如何在Javascript中找出从某个文件调用的函数

我不确定这是否是提出这个问题的正确位置。但我正在使用我非常新的代码库,我想看看使用Chrome开发工具从某个文件调用哪些函数。

答案

如果您在本地运行项目,则可以查看devtools中的Sources选项卡。如果您的项目设置成功(即没有缩小或某些东西),您通常可以导航到具有您要检查的功能的文件。从那里你可以实际在每个函数上放置断点并逐步执行它们,或者只看到它们接收的值。这是假设它是一个基于Web的项目在jquery,或反应,或只是普通的旧javascript,而不是node.js项目或类似的东西完成。

希望有所帮助!

以上是关于如何确定某个函数在Linux内核代码中的位置的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核空间内存申请函数kmallockzallocvmalloc的区别

如何在 Linux 内核模块中找到合适的 DWARF 符号作为地址?

读薄「Linux 内核设计与实现」 - 从内核出发

Linux中的ln 命令如何使用?

如何更方便的查看Linux内核代码的更新记录

确定使用障碍物(栅栏)的位置