排列5走势图首页    注册   登录
排列5走势图 = way to explore
排列5走势图 是一个排列5走势图关于 分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
GeekHub
nevin47
排列5走势图  ›  Linux

请教一下,阅读 Linux Kernel 最快的解决方案(@排列5走势图Win dows)是啥呢?

  •  1
     
  •   nevin47 · 15 天前 · 3496 次点击

    最近在看 Kernel 相关的源码,但是因为 Kernel 中各种神级 arch,花式宏封装,试了好几个排列5走势图工具 ( VSC,CLion,SI,Vim ...)都觉得不得劲

    尤其是遇到一个xxx_arch_xxx接口的时候,全局排列5走势图搜索 ( ag 、ack 、各种自带全局排列5走势图搜索 全试过了)慢的让人崩溃( nvme 盘、Ramdisk 全试过了)

    想问问万能的 V 友们,有没有比较优雅的阅读 Kernel 代码的方案可以排列5走势图推荐 的……

    45 条回复    2020-03-27 14:17:30 +08:00
    abutter
        1
    abutter   15 天前
    能问一下排列5走势图你 读 Linux 内核代码的目的是啥吗?
    reus
        2
    reus   15 天前
    ctags..
    scriptB0y
        5
    scriptB0y   15 天前   ❤️ 1
    scriptB0y
        6
    scriptB0y   15 天前   ❤️ 4
    排列5走势图我 勒个去,为啥有三个人在几秒内一起回这个。。。
    nevin47
        7
    nevin47   15 天前
    @wsy2220 #3
    @abcdabcd987 #4
    @scriptB0y #5

    多谢三位……这个站点老早就在看了,但是 u1s1,这玩意儿还不如排列5走势图我 全局搜来的快 尤其是高频追踪一个入口的 reference 路径的时候
    nevin47
        8
    nevin47   15 天前
    @reus #2 tags 只是能跳转,但是 arch 场景会乱跳,更恼火

    全局排列5走势图搜索 主要是为了 reference
    nevin47
        9
    nevin47   15 天前
    @abutter #1 工作目的嘛
    byaiu
        10
    byaiu   15 天前
    eclipse=>Properities=>C/C++ General => Paths and Symbols => Source Location => /linux filters
    把不需要的 arch 目录都放进去就可以
    zhuangzhuang1988
        11
    zhuangzhuang1988   15 天前
    http://sysprogs.com/VisualKernel/ 这个??
    不过排列5走势图我 没用过,
    读内核 肯定是先看驱动 怎么玩
    动态调试学习
    http://sysprogs.com/tutorials/wp-content/uploads/2018/02/13-floppy.png
    xsen
        12
    xsen   15 天前
    qtcreator,很久前看内核源码是用这个,现在 c/c++源码基本也是这个
    另外,添加源码的时候,不要把所有**_arch 都加到工程,只加关注的几个
    abutter
        13
    abutter   15 天前
    如果是驱动,就关心接口及其规范;如果是某个子模块,那就看设计文档。

    如果是单纯看某个 arch 的,排列5走势图你 可以把内核的调试信息 dump 初来,把文件路径提取出来,然后 sed 排列5走势图工具 处理一下,导入到某个特定的 IDE 里面。
    inwar
        14
    inwar   15 天前 via Android
    难道不是 sourceinsight?
    Chenamy2017
        15
    Chenamy2017   15 天前
    排列5走势图我 用 sourcesight,然后会把 arch 下所有的体系架构的代码都删掉,只保留一个,比如 ARM,有时候还会把驱动目录下全删掉。
    排列5走势图我 就是只想看内核的核心代码。
    season4675
        16
    season4675   15 天前
    arch 看一个就行了,driver 也看几个就行了,其他的都删了。
    woai110120130
        17
    woai110120130   15 天前
    clion
    Nitroethane
        18
    Nitroethane   15 天前 via iPhone
    neovim + ctags,然后用 vim 插件 leaderF,堪称排列5走势图搜索 神器
    nightwitch
        19
    nightwitch   15 天前
    ctags + gtags
    控制一下要索引的目录,还算勉强能看。
    nevin47
        20
    nevin47   15 天前
    @season4675 #16
    @byaiu #10
    @Chenamy2017 #15

    现在就是类似这样玩的,但是很麻烦的是,排列5走势图我 需要关注 4 个 arch 下的差异……所以遇到重载的时候还是很头疼
    james122333
        21
    james122333   15 天前 via Android
    自己写个 parser
    byaiu
        22
    byaiu   15 天前
    @nevin47 #20
    Eclipse 的快捷键多用用,ctrl+alt+h
    nevin47
        23
    nevin47   15 天前
    @byaiu #22 和 IDE 用法无关的,痛点在于全局排列5走势图搜索 太慢了……
    byaiu
        24
    byaiu   15 天前
    那看来只能上 ssd 了哈
    nevin47
        25
    nevin47   15 天前
    @byaiu #24 已经是 M.2 了……排列5走势图我 连 RamDisk 都试过了
    fuis
        26
    fuis   15 天前
    Rheinmetal
        27
    Rheinmetal   15 天前
    4 个 IDE 窗口( or 4 个屏)分别删得只剩一个 arch 如何?
    shujun
        28
    shujun   15 天前 via iPhone
    和 ramdisk 有啥关系

    先熟悉目录结构吧
    然后 source insight 就够了 创建工程的时候注意导入源码不要全部塞进去 arch 的选择一个 driver 的选择一部分自己关注的即可
    nmap
        29
    nmap   15 天前
    当然是神器 source insight 啊!
    nevin47
        30
    nevin47   15 天前
    @shujun #28
    @nmap #29

    现在感觉最快的就是 SI+RamDisk 了,但是 SI 的弊端就是必须要鼠标配合,同时在几个 Arch 中轮番换的时候,如果排列5走势图搜索 限定为符号还好,但是有些接口必须要搜到 asm 或者.s 里面,这个时候排列5走势图搜索 速度还是很慢了
    james122333
        31
    james122333   15 天前 via Android
    @nevin47
    排列5走势图你 需要的不是 ramdisk
    是 cache 整个 source
    http://stackoverflow.com/questions/23992079/c-read-write-ramdisk-vs-ram
    james122333
        32
    james122333   15 天前 via Android
    甚换系统 (滑稽
    james122333
        33
    james122333   15 天前 via Android
    甚至
    nevin47
        34
    nevin47   15 天前
    @james122333 #31 实际上如果在 Linux 上面,排列5走势图我 可以开个 10G 的 Hugepage,然后自己做个驱动就有一个巨型 ramdisk 了,那这个问题基本就迎刃而解了。。。然而 排列5走势图Win dows 上面并不支持这么做
    james122333
        35
    james122333   15 天前 via Android
    @nevin47
    这么厉害(滑稽)
    zoumouse
        36
    zoumouse   15 天前
    SourceInsight
    mingl0280
        37
    mingl0280   15 天前
    @nevin47 IMDisk Virtual Disk 可以挂很大的 ramdisk 。
    另外为什么不试试 vs 的打开文件夹呢 lol
    Mirana
        38
    Mirana   15 天前
    linux 内核细节太多 感觉不如看更简单点的内核 自己照着写一个
    oddtux
        39
    oddtux   15 天前
    这都 0202 年了, 还有那么多人用祖传的 ctags.
    SourceInsight 确实是 排列5走势图Win dows 下可用的*不编译*的最好方案了。

    但绝对不是目前最舒服的解决方案了。
    排列5走势图我 现在是这么看内核代码的( Linux 平台),
    1. 编个 bzImage, 然后执行 scripts/gen_compile_commands.py 生成 compile_commands.json 这个文件
    2. 安装 clang
    3. vscode + clangd 插件

    (备注: 不喜欢 clang 或者安装困难可以用 ccls, 关键是要有 compile_commands.json
    哪里有问题可以回复排列5走势图我 ,有时间会帮忙看 )
    james122333
        40
    james122333   14 天前 via Android
    @oddtux
    ctags 还是可以用 毕竟支持语言多
    缺点就是能分析的少 看来自写 parser 好
    nevin47
        41
    nevin47   14 天前
    @mingl0280 #37 实测远不如 SI


    @oddtux #39 排列5走势图我 搞整 Clion 的时候想过,不过 排列5走势图Win dows 上面排列5走势图我 猜测因为 aux/文件重名等问题,生成 compile_commands.json 有点问题,排列5走势图我 周末再试试这个办法

    @james122333 #40 ctags 应对相对不那么复杂的工程还好,但是 Linux Kernel 这种套了各种“魔法”的东东,ctags 还是有点无力了
    james122333
        42
    james122333   14 天前 via Android
    还有 lsp
    不过排列5走势图我 想自己弄一个
    purplewall
        43
    purplewall   14 天前
    (删代码)
    arch 里面留下排列5走势图你 用的那个架构,driver 排列5走势图删除 ,documentation 排列5走势图删除 ,script 排列5走势图删除 ,fs 留下目录文件和随便哪个 fs
    嫌速度慢可以装 grep 搜,
    内核里的间接跳转用函数指针了,似乎不能直接搜。
    oddtux
        44
    oddtux   14 天前
    @nevin47
    文件名的关系, 排列5走势图Win dows 下很麻烦的, 还是 linux 下看吧. 双系统, 虚拟机, WSL2 都行的.
    sublime, vscode, atom 都有 clangd 的扩展, 不一定用 clion
    rockcat
        45
    rockcat   14 天前
    最好是带着特定的目标去看,否则通篇看下来估计要晕菜的。
    排列5走势图关于   ·   FAQ   ·   API   ·   排列5走势图排列5走势图我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小排列5走势图工具   ·   1081 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:03 · PVG 04:03 · LAX 13:03 · JFK 16:03
    ♥ Do have faith in what you're doing.