StateThreads高级调试—StateThreads调试

在前面《StateThreads调试环境搭建》里,我们虽然可以断点调试 loopupdns 了,但是由于 clion 无法解析 StateThreads 的 Makefile 的代码,所以在 clion 里面并没有函数定义跳转,也无法使用 find usage 等功能。

没有这些功能会阻碍我们阅读源码的速度,所以本文就来讲解一下如何修改 Makefile 文件,让 clion 能够解析它。

根据我的经验,要让 clion 支持,就尽量不要在 Makefile 里面用 变量,特别是那些 shell 命令返回的变量,所以我对 Makefile 做了以下修改。

ini 复制代码
#增加这行代码到开头
OS         = LINUX
makefile 复制代码
TARGETDIR   = $(OS)_$(shell uname -r)_$(BUILD)
改为
TARGETDIR   = Linux_DBG
makefile 复制代码
all: $(ST_ALL)
改为
ST_ALL      = $(TARGETDIR) $(LIBRARIES) $(HEADER) $(EXAMPLES) $(DESC)
makefile 复制代码
#增加下面的代码

../Linux_DBG/libst.a: $(OBJS)
    $(AR) $(ARFLAGS) $@ $(OBJS)
    $(RANLIB) $@
    rm -f obj; $(LN) $(LNFLAGS) $(TARGETDIR) obj

../Linux_DBG/st.h: public.h
    rm -f $@
    cp public.h $@

修改后的 Makefile 可以在 GitHub 进行下载。


然后我们删除 st-1.9 目录下的 .idea 隐藏目录,清除一下 clion 的缓存,然后再重新打开 clion,会发现能解析 Makefile 了,如下:

然后因为 lookupdns.c 里面用到了 obj 目录下的 st.h 文件,所以你需要在命令行执行 make all ,一些函数跳转才会正常。

因为只有执行了 make all 才会生成 obj 目录


本文是《 SRS原理 》一书中的文章,如需观看更多内容,请购买本书。

相关推荐
音视频牛哥5 天前
RTSP协议规范与SmartMediaKit播放器技术解析
音视频开发·视频编码·直播
音视频牛哥6 天前
基于SmartMediaKit的无纸化同屏会议与智慧教室技术方案
音视频开发·视频编码·直播
路漫漫心远8 天前
音视频学习笔记十三——渲染与滤镜之着色器基础
音视频开发
是阿鸽呀8 天前
【音视频开发】7. 使用 FFmpeg7 提取 MP4 中的 H264 视频并封装成 Annex-B 流
音视频开发
程序员_Rya9 天前
RTC、直播、点播技术对比|腾讯云/即构/声网如何 选型 2025 版
音视频开发·直播·技术选型·音视频sdk·音视频对比
AJi9 天前
FFmpeg学习(五):音视频数据转换
ffmpeg·音视频开发·视频编码
音视频牛哥11 天前
Android平台GB28181执法记录仪技术方案与实现
音视频开发·视频编码·直播
音视频牛哥11 天前
Python下的毫秒级延迟RTSP|RTMP播放器技术探究和AI视觉算法对接
音视频开发·视频编码·直播
jaywangep15 天前
纯前端:提取视频某一帧显示在页面上
前端·音视频开发
音视频牛哥16 天前
Android平台GB28181接入模块(SmartGBD)技术接入说明
音视频开发·视频编码·直播