• 部署断点调试下进入Libuv源码的环境


    部署断点调试下进入Libuv源码的环境

    TIPS:在我们使用Libuv的过程中可能不仅仅只是导出Libuv的lib静态链接库调试,有时候可能我们需要知道Libuv内部是如何执行的,我们需要在断点调试的情况下,调试进入Libuv源码,从而查看Libuv如何运转。

    以下环境均是Windows 10操作系统。编程工具:Visual Studio 2017。

      博主使用过三种方式引入Libuv源码环境,接下来对三种方式进行详细说明。注意,以下方式默认都在项目内已经引入Libuv Lib静态链接库。

    导入Libuv Lib静态链接库方式:https://ufgnix0802.blog.csdn.net/article/details/125435743

    引入Lib静态链接库以及相应的pdb文件

      我们都知道,pdb文件是包含当前项目调试信息的文件,正常情况下,我们只需引入Libuv源码导出的Lib文件(静态链接库)以及相应的pdb文件,那么我们就可以在另外一个项目引入静态链接库的同时,调试进入Libuv源码,但是,博主在使用的这种方式的时候,出现问题:添加断点的函数调试跳跃到Libuv源码并不是我们指定断点的那个函数实现部分,而是错乱的。这种情况在我使用一个空项目的情况下是没有出现的,但是当我用这种方式引入我们目前已经构建的较大型的项目中时,是调试错乱的。

    Libuv源码中构建新项目

      紧接着,博主在使用CMake编译的VS项目上新建一个空项目,将我们的项目引入进来同时Lib库也配置完毕,但是这种方式涉及到同一个解决方案下不同项目之间的调用问题,如果不解决这个问题,那么仍然无法在调试的情况下进入Libuv源码部分。博主并未找到有效的解决方案。

    引入Libuv源代码至项目中

      最后一种方式成功,即将Libuv源代码直接引入到我们的项目中。比如我们在Windows环境下,新建一个空项目,引入Libuv源码导出的Libuv文件(静态链接库),并将Libuv公共源码以及Windows环境下的源码引入,如下:

    效果图

      引入到空项目中,如下:

    效果图

    效果图

    效果图

      当我们运行项目,注意需要是64位环境下,会产生如下情况:
    效果图
    效果图

      我们只需点击找到对应的地方,更改为它指定的函数即可。

    效果图
    效果图
    效果图
    效果图
    效果图
    效果图

      下面的问题直接在项目中C/C++中的预处理器定义相应的宏即可。

    效果图
    效果图

      紧接着继续运行项目,如下:

    效果图

      主要原因是我们当前的Windows 10系统已经弃用了这些API,只需将源码中的API改成它指定的API即可。

    效果图
    效果图
    效果图
    效果图
    效果图
    效果图
    效果图
    效果图
    效果图
    效果图

      再次运行项目,如下:
    效果图

      通过查找网上的解决方案,只需引入如下代码即可:

    效果图

    #pragma warning(disable: 4996)

    效果图

    测试

      我们调用Libuv API,调试断点看是否可以进入源码,如下:

    效果图
    效果图

      ok,完成。

  • 相关阅读:
    一款提高测试、验证和开发效率的测试管理工具SolarManager
    详解数据治理知识体系
    lodash库_.chunk、_.pick、_.omit、_.cloneDeep、_.debounce方法
    Google Earth Engine(GEE)—— 多光谱指数整合中推导出湿地覆盖类型 (WCT)
    python Ursina Engine-3D (03-移动、旋转)
    微信小程序 工具使用(HBuilderX)
    如何重装Windows Mirosoft Store
    多项式算法6:分治 FFT
    set和map的使用
    闲鱼面试:说说JWT工作原理?
  • 原文地址:https://blog.csdn.net/qq135595696/article/details/127797038