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原理 》一书中的文章,如需观看更多内容,请购买本书。

相关推荐
hk11245 天前
【音视频/边缘计算】2025年度H.265/HEVC高并发解码与画质修复(Super-Resolution)基准测试报告(含沙丘/失控玩家核心样本)
ffmpeg·边缘计算·音视频开发·h.265·测试数据集
李小轰_Rex15 天前
把手机变成听诊器!摄像头 30 秒隔空测心率 - 开箱即用
android·音视频开发
李小轰_Rex16 天前
纯算法AEC:播录并行场景的回声消除实战笔记
android·音视频开发
否子戈17 天前
WebCut前端视频编辑UI框架一周开源进度
前端·音视频开发·ui kit
SHERlocked9320 天前
摄像头 RTSP 流视频多路实时监控解决方案实践
c++·后端·音视频开发
mortimer1 个月前
Python + FFmpeg 视频自动化处理指南:从硬件加速到精确剪辑
python·ffmpeg·音视频开发
否子戈1 个月前
做中国人自己的视频编辑UI框架,WebCut正式开源
前端框架·音视频开发·视频编码
音视频牛哥1 个月前
从低延迟到高可用:RTMP与 HTTP/HTTPS-FLV在App播放体系中的角色重构
人工智能·音视频·音视频开发·http-flv播放器·https-flv播放器·ws-flv播放器·wss-flv播放器
音视频牛哥1 个月前
轻量级RTSP服务的工程化设计与应用:从移动端到边缘设备的实时媒体架构
人工智能·计算机视觉·音视频·音视频开发·rtsp播放器·安卓rtsp服务器·安卓实现ipc功能
快乐1011 个月前
Media3 ExoPlayer无法播放不带.m3u8后缀hls媒资
音视频开发