在 Linux 下调试 CxImage(或基于 CxImage 的程序),通常可以从编译调试版本、使用调试器、定位崩溃/异常、查看日志几个方面入手。CxImage 本身是一个 C++ 图像处理库,调试思路与普通 C/C++ 项目类似。
下面按常见场景给你一套实用流程。
如果你是自己编译 CxImage:
cd CxImage
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make -j$(nproc)
或直接在 Makefile 中加入:
CXXFLAGS = -g -O0
✅ 必须包含:
-g:生成调试信息-O0:关闭优化(否则变量会被优化掉)gdb ./your_program
| 功能 | 命令 |
|---|---|
| 设置断点 | b CxImage.cpp:123 |
| 运行 | r |
| 单步 | n |
| 进入函数 | s |
| 查看变量 | p variable |
| 查看调用栈 | bt |
| 继续执行 | c |
| 查看线程 | info threads |
✅ 示例:
b CxImage::Load
r
bt
常见原因:
调试方法:
CxImage image;
if (!image.Load("test.jpg", CXIMAGE_FORMAT_JPG)) {
printf("Load failed\n");
}
在 GDB 中:
b CxImage::Load
查看:
fopen / read 返回值gdb ./app
run
bt
常见 CxImage 问题:
CxImage✅ 检查点:
image.IsValid()image.GetWidth() / GetHeight()CxImage 很容易出现:
sudo apt install valgrind
valgrind --leak-check=full ./your_program
✅ 重点看:
Invalid read/writedefinitely lostfatal error: ximage.h: No such file or directory
解决:
-I/path/to/cximage/include
undefined reference to CxImage::Load
检查:
-lcximage
g++ 而不是 gcc
✅ 打印调试法(快速)
#define CXIMAGE_DEBUG
或在关键函数加:
fprintf(stderr, "width=%d height=%d\n",
image.GetWidth(), image.GetHeight());
✅ 断点建议位置
CxImage::LoadCxImage::DecodeCxImage::CreateCxImage::Destroy| 问题 | 原因 |
|---|---|
| 图片加载失败 | 格式不支持 / 路径不对 |
| 程序崩溃 | 未判断 IsValid() |
| 内存暴涨 | 忘了 Destroy() |
| 乱码/花屏 | 色彩格式不匹配 |
你可以直接贴出:
bt 输出我可以 直接帮你定位问题,甚至给你最小复现示例。