在 Debian 上调试 CxImage(一个 C++ 图像处理库)通常包含几个关键环节:编译带调试信息的库/程序、使用 GDB 或 IDE 调试、定位常见问题。下面按实战流程说明。
sudo apt update
sudo apt install build-essential gdb cmake git
git clone https://github.com/ata4/cximage.git
cd cximage
注意:不同 CxImage 版本结构略有差异,有些是
.dsp/.vcxproj,在 Linux 下一般手动写 Makefile 或 CMake。
g++ -g -O0 -I. -I./CxImage \
your_test.cpp \
CxImage/*.cpp \
jpeg/*.cpp \
png/*.cpp \
zlib/*.cpp \
-o test_cx
参数说明:
-g:生成调试信息-O0:关闭优化(否则变量可能被优化掉)-I:包含头文件路径mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
gdb ./test_cx
break main
run
next
step
print img
backtrace
示例断点:
break CxImage::Load
break CxImage::Create
CxImage image;
bool ok = image.Load("test.jpg", CXIMAGE_FORMAT_JPG);
调试方式:
print ok
step into Load
常见原因:
检查:
if (!image.IsValid()) {
printf("invalid image\n");
}
GDB 中:
print image.head
print image.pDib
使用:
gdb ./test_cx
run
bt
或更高级:
sudo apt install valgrind
valgrind ./test_cx
{
"name": "Debug CxImage",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/test_cx",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb"
}
✅ 一定要:
-g -O0IsValid()❌ 避免:
如果你愿意,可以:
我可以直接帮你定位问题。