在 Debian 下调试 CxImage(一个 C++ 图像处理库),通常可以从编译调试版本、使用 GDB、日志输出、示例程序几个方面入手。下面按实用步骤说明。
sudo apt update
sudo apt install build-essential gdb cmake git
git clone https://github.com/pedrohks/cximage.git
cd cximage
(如果是老版本 tarball,也类似)
一定要用 -g -O0 编译,否则 GDB 看不到符号。
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
修改或添加:
CXXFLAGS = -g -O0
然后:
make clean
make
gdb ./your_program
run
bt # 查看崩溃堆栈
list # 查看源码
break CxImage.cpp:123
step
next
print var
例如:
break CxImage::Load
run
CxImage 本身没有强日志系统,但可以:
在关键函数里加:
printf("[DEBUG] CxImage::Load %s\n", filename);
if (!image.Load("test.jpg")) {
printf("Load failed, error code: %d\n", image.GetLastError());
}
常见错误:
CXIMAGE_ERR_MEMCXIMAGE_ERR_FORMATCXIMAGE_ERR_OPENCxImage 一般有 demo/ 或 examples/:
cd cximage/demo
make
gdb ./demo
这是最快定位问题的方式。
检查依赖库:
ldd ./your_program
确保:
安装:
sudo apt install libjpeg-dev libpng-dev libtiff-dev
Debian 默认 UTF-8:
setlocale(LC_ALL, "en_US.UTF-8");
90% 是:
用:
gdb ./app
run
bt
cmake -DCMAKE_BUILD_TYPE=Debug .
make
gdb ./test
配合:
image.Debug();
if (!image.Load("a.png"))
std::cerr << image.GetLastError() << std::endl;
如果你愿意,可以告诉我:
我可以给你针对性调试方案。