在 Debian 上调试 CxImage(一个 C++ 图像处理库),通常分为 环境准备、编译调试版本、使用调试器、定位问题 四个步骤。下面按常见场景给你一套实用流程。
sudo apt update
sudo apt install build-essential gdb cmake git
如果你用的是 CxImage 源码(而不是系统库),还需要:
sudo apt install libpng-dev libjpeg-dev libtiff-dev libgif-dev
git clone https://github.com/hujiandong/cximage.git
cd cximage
如果使用的是老版本 CxImage(VC 风格项目),可能需要手动写
CMakeLists.txt或Makefile。
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make -j$(nproc)
g++ -g -O0 -o test_cx \
main.cpp \
*.cpp \
-I. \
-lpng -ljpeg -ltiff -lgif
✅ 关键点
-g:生成调试符号-O0:关闭优化,方便单步调试gdb ./test_cx
run
bt # 查看调用栈
list # 查看源码
break main
break CxImage.cpp:123
step
next
print variable
CxImage img;
bool ret = img.Load("test.jpg", CXIMAGE_FORMAT_JPG);
GDB 中:
break CxImage::Load
run
step
print ret
gdb ./test_cx
run
bt
重点看:
CxImage调试建议:
示例:
if (!img.IsValid()) {
printf("Image load failed\n");
}
安装:
sudo apt install valgrind
运行:
valgrind --leak-check=full ./test_cx
可发现:
安装插件:
launch.json 示例:
{
"name": "Debug CxImage",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/test_cx",
"args": [],
"cwd": "${workspaceFolder}",
"MIMode": "gdb"
}
✅ 一定要 Debug 编译
✅ 用 gdb + valgrind
✅ 从 Load / Save / Draw 等入口函数打断点
✅ 注意 CxImage 是 非线程安全 的
如果你愿意,可以告诉我:
我可以直接帮你 定位 bug 或写最小复现示例。