zoukankan      html  css  js  c++  java
  • Source Insight阅读Linux Kernel误解析__read_mostly问题解决

    https://mp.weixin.qq.com/s/WIg7jyD8FCFapKQ7gj03xA

     

    Source Insight is a powerful project-oriented programming editor, code browser, and analyzer that helps you understand code, while you work and plan. Source Insight has built-in dynamic analysis for C/C++, C#, Java, Objective-C, and more.

     

    使用Source Insight阅读Linux内核代码是很方便的,面对那么多的代码文件,也可以做到很快的响应。但同时也存在一些小的痛点,比如本文将要介绍的__read_mostly的误解析问题,就导致代码跟踪中断。

     

    1. __read_mostly误解析

     

    在跟踪数据帧接收流程的过程中,驱动接收完数据包之后,会调用netif_receive_skb把帧交给协议栈处理,在跟踪过程中,会发现ptype_all是黑色的:

    因为是黑色的,所以ptype_all没有被Source Insight识别到,无法方便的跟踪到它是如何定义的。

     

    有一个稍微绕一点的方法,就是使用Reference全局查找:

    查找的结果如下:

     

    可以发现第一行就是ptype_all的定义:

    根据代码着色,可以发现Source Insight把这一行里的__read_mostly误解析为了变量名,而ptype_all只是其修饰符。

     

    从Symbols窗口可以看到,误解析的变量还有很多:

     

    2. __read_mostly误解析的解决

     

    虽然查找Reference可以解决问题,但是毕竟有点绕,要是能够直接使用Ctrl+鼠标单击就能跳转到正确的定义位置就好了。

     

    因为这个问题只有在阅读Linux内核源码的工程中存在,所以这里提供一个在Project范围内解决该问题的方法。

     -----------------------------------------------------------------------------

    这是一篇付费文章,请移步付费阅读全文,谢谢!
    文章链接:https://mp.weixin.qq.com/s/WIg7jyD8FCFapKQ7gj03xA

  • 相关阅读:
    linux 安装 svn
    人群计数:Single-Image Crowd Counting via Multi-Column Convolutional Neural Network
    Ubuntu查看CPU占用和使用情况
    看完这篇文章,我奶奶都懂了HTTPS原理
    EfficientNet算法笔记
    Soft NMS算法笔记
    DenseNet算法详解
    AI竞赛服务平台—— FlyAI
    Cornernet训练自己的数据
    深度学习物体检测:CornerNet
  • 原文地址:https://www.cnblogs.com/wjcdx/p/14455184.html
Copyright © 2011-2022 走看看