在 Debian 上调试 CxImage(一个 C++ 图像处理库)通常分几个层面:
编译调试版本 → 用 gdb / valgrind / 日志 → 结合源码定位问题。下面按实战流程说明。
sudo apt update
sudo apt install build-essential gdb valgrind cmake
git clone https://github.com/ata4/cximage.git
cd cximage
(或你自己的 CxImage 版本)
CxImage 默认可能是 Release,必须加 -g -O0。
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
修改 Makefile 或手动编译:
g++ -g -O0 -I. -c *.cpp
⚠️ 确保:
-O2 / -O3-ggdb ./your_program
run
bt # 查看调用栈
frame 0
print var
list
break CxImage.cpp:123
比如崩溃在:
image.Load("test.jpg");
断点:
break CxImage::Load
CxImage 很多函数返回 bool:
if (!image.Load("a.jpg")) {
printf("Load failed\n");
}
可加:
image.GetLastError();
CxImage 容易:
用 Valgrind:
valgrind --leak-check=full ./your_program
有些 CxImage 版本有:
#define CXIMAGE_DEBUG
可手动加在头文件或编译参数:
-DCXIMAGE_DEBUG
✅ 图片路径是否正确(绝对路径最稳)
✅ 图片格式是否支持(JPG/PNG/BMP)
✅ 是否 new CxImage 后未 delete
✅ 是否跨线程使用 CxImage
✅ 是否混用不同编译器版本
#include "CxImage.h"
#include <cstdio>
int main() {
CxImage img;
if (!img.Load("test.jpg")) {
printf("Load failed\n");
return 1;
}
img.Save("out.png", CXIMAGE_FORMAT_PNG);
return 0;
}
编译:
g++ -g -O0 main.cpp -o test -I./CxImage -L./build -lcximage
你可以告诉我:
我可以帮你精确定位问题。